1

仅当我拥有该 ControlBrushKey 行并且它不会中断指向该位置时才会引发未处理的异常。

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:我必须在代码上做)

4

1 回答 1

0

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

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

或者,您可以将SolidColorBrush对象添加为 Dictionary 值,而不是Colors.Red作为该值Style.Resources.Addobject类型。

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

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

于 2013-09-19T15:11:44.327 回答