ControlBrushKey在PresentationFramework.dll中抛出异常

时间:2013-09-19 15:04:21

标签: c# wpf

只有当我拥有ControlBrushKey行时才会抛出Unhandled异常,并且它不会指向该位置。

var x2 = new Style();
x2.Resources.Add(SystemColors.ControlBrushKey, Colors.Red);
myListbox.ItemContainerStyle = x2

PresentationFramework.dll中出现未处理的“System.InvalidCastException”类型异常

其他信息:无法将“System.Windows.Media.Color”类型的对象强制转换为“System.Windows.Media.Brush”。

这是PresentationFramework.dll的错误还是我错过了什么?我使用.NET4

(PS:我必须在代码上做)

1 个答案:

答案 0 :(得分:0)

Colors.Red会返回System.Windows.Media.Color类型。无论您在何处使用,都需要System.Windows.Media.Brush类型,这就是您收到错误的原因(没有从Media.ColorMedia.Brush的隐式转换)。您需要使用BrushConverter或仅创建新画笔将颜色转换为画笔。例如

myObject.Background = new SolidColorBrush(x2[SystemColors.ControlBrushKey]);

或者,您可以将SolidColorBrush对象添加为词典值而不是Colors.Red,因为Style.Resources.Add为该值采用object类型。

x2.Resources.Add(SystemColors.ControlBrushKey, new SolidColorBrush(Colors.Red));

您选择哪种方法可能取决于您是更频繁地使用Color类型还是Brush类型。在ItemContainerStyle的情况下,我认为第二种方法会更容易。