只有当我拥有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:我必须在代码上做)
答案 0 :(得分:0)
Colors.Red
会返回System.Windows.Media.Color
类型。无论您在何处使用,都需要System.Windows.Media.Brush
类型,这就是您收到错误的原因(没有从Media.Color
到Media.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
的情况下,我认为第二种方法会更容易。