如何转换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.selectedColor到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,则它将返回该值。