在 WPF 中定义可重用资源的良好做法
本文关键字:资源 WPF 定义 | 更新日期: 2023-09-27 18:35:05
我一直在用.Net编写CAD风格的程序,为此我必须有很多Brushes
和Custom DashStyles
。
到目前为止,我已经在static
类中定义了它们。 例如:
public static readonly Brush GridBrushInModel = Brushes.DarkGray;
现在我可以随时使用刷子。不过我也冻结了它们。
我的问题是,这是应该这样做的方式吗?还是有更好的方法?例如在ResourceDictionary
中定义?它是如何做到的?
WPF 应用程序中的共享资源通常存储为ResourceDictionary
。每个字典都应有自己的 XAML 文件(如果要拆分资源)。
它们很容易定义:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush x:Key="MyCoolBrush" Color="Black"/>
</ResourceDictionary>
请注意,我为元素提供了一个x:Key
属性。这是稍后用于引用资源的内容。
最后,您必须将字典合并到使用代码中。这可以在任何级别完成,尽管它最常在Window.Resources
或App.xaml
中完成。
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/MyBrushes.xaml"/>
</ResourceDictionary.MergedDictionaries>
...
</ResourceDictionary>
</Window.Resources>
拥有它们后,可以在 XAML 中引用它们,如下所示:
<Grid Background={StaticResource MyCoolBrush}/>