Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何延长刷子的数量?_C#_Wpf - Fatal编程技术网

C# 如何延长刷子的数量?

C# 如何延长刷子的数量?,c#,wpf,C#,Wpf,我想扩展System.Windows.Media.Brush类中的颜色数,这样我就可以使用新笔刷的字符串名称进行绑定 比如:value=“myRed” 我使用C#、.NET 4.5.2、VS2015、Windows 7。这是不可能的,因为System.Drawing.Brusks类是密封的。这意味着它不能从继承,因此不能扩展 您最好创建一个包含您的颜色的资源字典: <ResourceDictionary ... > <!-- Declare your colours

我想扩展
System.Windows.Media.Brush
类中的颜色数,这样我就可以使用新笔刷的字符串名称进行绑定

比如:
value=“myRed”


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

这是不可能的,因为
System.Drawing.Brusks
类是
密封的。这意味着它不能从继承,因此不能扩展

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

<ResourceDictionary ... >

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

</ResourceDictionary>
您可以像下面这样访问代码隐藏中的资源:

Brush myColour = (Brush)Application.Current.FindResource("MyColour");
在我看来,这是扩展现有
笔刷
类的一种更好的方法,因为在什么是您的代码和什么是.NET代码之间有一个明确的界限。不仅如此,在资源字典中使用颜色可以促进跨项目的重用,而且资源可以很容易地扩展,并更适应不断变化的需求


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

我不想使用转换器。我希望能够在多个xaml文件和cs文件中使用。因此基本上,对于C#wish list中的
密封类
,您需要
扩展属性
?除了Mike在回答中解释的以外,您不仅需要扩展Brush类,还需要扩展从字符串转换为Brush的代码。查看.NET引用源(从BrushConverter开始)最终会得到一个内部enum KnownColor和一个内部类KnownColors,其中包含一个巨大的嵌套switch语句。
Brush myColour = (Brush)Application.Current.FindResource("MyColour");