[英]Casting SelectedItem of WPF Combobox to Color causes exception
我有一個可用的系統顏色的組合框數據綁定。 當用戶選擇顏色時,會觸發以下代碼:
private void cboFontColour_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Color colour = (Color)(cboFontColour.SelectedItem);
}
這會拋出一個Casting Exception,並顯示以下消息:“指定的強制轉換無效”。 當我將鼠標懸停在調試器中的cboFontColour.SelectedItem上時,它始終是一個Color對象。
我不明白為什么系統似乎無法從Color轉換為Color,任何幫助都會有很大的幫助。
你應該總是使用is
和as
,而不是直接類型轉換。 另外,請確保Color實際上與您在調試器中看到的類型相同。
你是如何設置綁定到可用的系統顏色? 如果您正在使用SystemColors
類的靜態屬性,請注意,盡管該類的名稱,並非所有這些條目都是Color對象(但也是SolidColorBrushes和ResourceKeys)。 你總能做到
MessageBox.Show(cboFontColour.SelectedItem.GetType().ToString());
// or
MessageBox.Show(cboFontColour.SelectedValue.GetType().ToString());
檢查類型。
我遇到了同樣的問題,這個問題沒有提出任何建議。 在嘗試轉換為(Color)時我一直遇到異常,如果我嘗試使用'Color?',代碼甚至都不會編譯? 或'作為'。 最后提出了以下解決方法。 它並不理想,因為我現在必須創建一個新對象,但至少它可以工作:
string colorName = _comboBox.SelectedValue.ToString();
Color color = (Color)ColorConverter.ConvertFromString(colorName);
啊,終於解決了。 實際返回的函數是DependancyProperty而不是Color。 不確定我是如何錯過這么久的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.