簡體   English   中英

將WPF Combobox的SelectedItem轉換為Color會導致異常

[英]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,任何幫助都會有很大的幫助。

你應該總是使用isas ,而不是直接類型轉換。 另外,請確保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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM