我想扩展System.Windows.Media.Brushes类中的颜色数量,因此可以使用新Brush的字符串名称进行绑定。

像:value="myRed"

我使用C#、. NET 4.5.2,VS2015,Windows 7。

最佳答案

这是不可能的,因为System.Drawing.Brushes类是sealed。这意味着它不能继承,因此不能扩展。

您最好创建一个包含颜色的资源字典:

<ResourceDictionary ... >

    <!-- Declare your colours here. -->
    <SolidColorBrush x:Key="MyColour">#ffffff</SolidColorBrush>

</ResourceDictionary>


然后将该字典包含在您的App.xaml中:

<Application ... >
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!-- You may need to include more than one resource dictionary. -->
                <ResourceDictionary Source="pack://application:,,,/Your.Project;component/Path/To/Dictionary.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>


您可以像下面这样在代码背后找到这些资源:

Brush myColour = (Brush)Application.Current.FindResource("MyColour");


在我看来,这是扩展现有Brushes类的一种更好的方法,因为在您的代码和.NET代码之间存在明显的区别。不仅如此,将颜色存储在资源字典中可促进跨项目的重用,并且可以轻松扩展资源并使其更适应不断变化的需求。

您可以在documentation中找到有关资源字典的更多信息。

关于c# - 如何增加电刷的数量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39866795/

10-13 08:00