ControlBrushKey 在 PresentationFramework.dll 中抛出异常
本文关键字:抛出异常 dll PresentationFramework ControlBrushKey | 更新日期: 2023-09-27 18:31:55
仅
当我有该 ControlBrushKey 行时,才会引发未处理的异常,并且它不会指向该位置中断。
var x2 = new Style();
x2.Resources.Add(SystemColors.ControlBrushKey, Colors.Red);
myListbox.ItemContainerStyle = x2
PresentationFramework 中发生了类型为"System.InvalidCastException"的未处理异常.dll
其他信息:无法将类型为"System.Windows.Media.Color"的对象转换为类型"System.Windows.Media.Brush"。
这是演示框架.dll错误还是我错过了什么?我使用 .NET4
(PS:我必须在代码上做)
>Colors.Red
返回System.Windows.Media.Color
类型。无论您在哪里使用都需要System.Windows.Media.Brush
类型,这就是您收到错误的原因(没有从 Media.Color
到 Media.Brush
的隐式转换)。您需要使用BrushConverter或仅创建新画笔将颜色转换为画笔。例如
myObject.Background = new SolidColorBrush(x2[SystemColors.ControlBrushKey]);
或者,可以将 SolidColorBrush
对象添加为 Dictionary 值,而不是Colors.Red
Style.Resources.Add
为值采用object
类型。
x2.Resources.Add(SystemColors.ControlBrushKey, new SolidColorBrush(Colors.Red));
选择哪种方法可能取决于您是更频繁地使用 Color
类型还是Brush
类型。就ItemContainerStyle
而言,我认为第二种方法会更容易。