如何转换ColorPicker.selectedColor到system.windows.media.color
本文关键字:system windows media color selectedColor ColorPicker 何转换 转换 | 更新日期: 2023-09-27 18:16:05
ColorPicker _clpicker;
System.Windows.Media.Color c = _clpicker.SelectedColor;
错误:
不能隐式转换类型"System.Windows.Media.Color?""System.Windows.Media.Color"。存在显式转换(是吗?)
如果没有更具体的信息,包括关于您正在使用的ColorPicker
类型的详细信息(wpf&help中没有这样的内置类;假设您正在使用许多第三方选项中的一个),则不可能确切地知道您的问题是什么。
但是根据错误消息,似乎SelectedColor
属性被声明为Nullable<Color>
(即Color?
),当然,正如错误所说,虽然没有从Nullable<Color>
到Color
的隐式转换,但您可以通过强制转换显式转换:
System.Windows.Media.Color c = (System.Windows.Media.Color)_clpicker.SelectedColor;
或者,您可以使用Value
属性:
System.Windows.Media.Color c = _clpicker.SelectedColor.Value;
同样,如果没有更多的细节,就不清楚为什么SelectedColor
属性是一个可空类型。但是,在您尝试此赋值时,值实际上可能是null
。在这种情况下,编译器错误告诉你一些非常重要的事情:你没有做任何事情来处理null
的情况。
如果SelectedColor
属性的值为null
,上述两个选项都会抛出异常。
null
值,但最简单的是让Nullable<T>
类型为您做这件事:
System.Windows.Media.Color c = _clpicker.SelectedColor.GetValueOrDefault();
如果SelectedColor
属性的值为null
,则c
变量将被赋予System.Windows.Media.Color
的默认值(即黑色)。如果您愿意,您可以将另一个默认值传递给GetValueOrDefault()
方法,如果原始值为null
,则它将返回该值。