在 WPF 中定义可重用资源的良好做法

本文关键字:资源 WPF 定义 | 更新日期: 2023-09-27 18:35:05

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

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

public static readonly Brush GridBrushInModel = Brushes.DarkGray;

现在我可以随时使用刷子。不过我也冻结了它们。

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

在 WPF 中定义可重用资源的良好做法

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}/>