2015-10-06 46 views
-3
ColorPicker _clpicker; 
System.Windows.Media.Color c = _clpicker.SelectedColor; 

錯誤:如何將ColorPicker.selectedColor轉換爲system.windows.media.color?

Cannot implicitly convert type 'System.Windows.Media.Color?' to 'System.Windows.Media.Color'. An explicit conversion exists (are you missing a cast?)

+0

可能是[WPF ColorPicker從wpf/xaml/toolkit綁定到屬性錯誤](http://stackoverflow.com/questions/14495581/wpf-colorpicker-from-wpf-xaml-toolkit-binding-to-property-錯誤)會有幫助 –

+0

查看'System.Windows.Media.Color?'中的問號。看起來你在這裏處理[Nullable type](https://msdn.microsoft.com/en-us/library/b3h38hb0(v = vs.110).aspx)。 – vesan

回答

1

沒有更多的具體信息,包括您正在使用(還有的ColorPicker型細節沒有這種內置的WPF&hellip類,想必您使用的是許多第三世界的一個那裏有黨派的選擇),不可能知道你的問題是什麼。

但基於該錯誤消息,看來該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,它將返回該值。

+0

非常感謝你 –

+0

如果你發現有用的答案,堆棧溢出約定是點擊答案的upvote按鈕。如果答案實際上解決了您的問題,堆棧溢出約定是通過答案點擊複選標記按鈕。有關如何使用堆棧溢出的更多詳細幫助,請參閱http://stackoverflow.com/help/someone-answers。 :) –

相關問題