在WPF中定义可重用资源的良好实践

时间:2014-12-24 00:07:34

标签: c# wpf

我一直在.Net写一个CAD风格的程序,为此我必须有很多BrushesCustom DashStyles

到目前为止,我已经在static课程中定义了它们。例如:

public static readonly Brush GridBrushInModel = Brushes.DarkGray;

现在我可以随时使用画笔。我也已经 Freezed 了。

我的问题是,这是应该这样做的吗?还是有更好的方法?例如在ResourceDictionary中定义?怎么做?

1 个答案:

答案 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.ResourcesApp.xaml

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/MyBrushes.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        ...
    </ResourceDictionary>
</Window.Resources>

一旦你拥有它们,就可以像这样在XAML中引用它们:

<Grid Background={StaticResource MyCoolBrush}/>