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

ControlBrushKey 在 PresentationFramework.dll 中抛出异常

>Colors.Red返回System.Windows.Media.Color类型。无论您在哪里使用都需要System.Windows.Media.Brush类型,这就是您收到错误的原因(没有从 Media.ColorMedia.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而言,我认为第二种方法会更容易。