我一直在.Net写一个CAD风格的程序,为此我必须有很多Brushes
和Custom DashStyles
。
到目前为止,我已经在static
课程中定义了它们。例如:
public static readonly Brush GridBrushInModel = Brushes.DarkGray;
现在我可以随时使用画笔。我也已经 Freezed 了。
我的问题是,这是应该这样做的吗?还是有更好的方法?例如在ResourceDictionary
中定义?怎么做?
答案 0 :(得分:4)
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}/>