我有一個組合框,其中SelectedItem綁定到業務對象中的一個屬性。通常它工作得很好。但是,對象的屬性設置器中有邏輯比偶爾「取消」它認爲無效的新值。這是以無聲的方式完成的,即不會拋出異常,只是屬性值不會改變。在這種情況下,我希望組合框的SelectedItem恢復到之前的選擇,因爲從技術上講,新的選擇永遠不會傳播到基礎屬性。目前,組合框只是停留在新的選擇上,這是誤導性的,因爲這不是基礎屬性的真實價值。如何處理SelectedItem被對象「取消」
如何確保組合框總是顯示屬性的真實值?
我有一個組合框,其中SelectedItem綁定到業務對象中的一個屬性。通常它工作得很好。但是,對象的屬性設置器中有邏輯比偶爾「取消」它認爲無效的新值。這是以無聲的方式完成的,即不會拋出異常,只是屬性值不會改變。在這種情況下,我希望組合框的SelectedItem恢復到之前的選擇,因爲從技術上講,新的選擇永遠不會傳播到基礎屬性。目前,組合框只是停留在新的選擇上,這是誤導性的,因爲這不是基礎屬性的真實價值。如何處理SelectedItem被對象「取消」
如何確保組合框總是顯示屬性的真實值?
一些挖後,我遇到了這個:
子類組合框,並迫使它來更新目標被選擇後,改變了作品的給出的解決方案在我的機器上,但該網站上的評論員認爲,即使這不是防彈的。有幾個網站提到wpf組合框在這方面很古怪。顯然MS做出了可疑的決定,讓組合框忽略任何進一步的通知,同時設置綁定屬性,這是有道理的,直到你遇到這樣的情況。這至少是其他WPF專家的意見,我絕對不是:)
需要調用NotifyPropertyChanged
private enum1 e1 = enum1.val1;
public enum1 E1
{
get { return e1 }
set
{
if (e1 == value) return;
if (OK(value)) e1 = value;
NotifyPropertyChanged(E1);
}
}
我想到了這一點,但它沒有在我的機器上工作。在一些網絡搜索後,我已經瞭解到wpf組合框有一些問題,請參閱我的回答帖子以獲取鏈接。顯然它的行爲在wpf 3.5和4.0之間可能會有所不同! – Tekito
你如何綁定ComboBox的SelectedItem屬性? –
SelectedItem =「{Binding Path = ProjectionType}」....其中ProjectionType是綁定對象的屬性的名稱。這是一個枚舉屬性。 – Tekito
業務對象需要取消,然後調用NotifyPropertyChanged,以便舊值傳播回UI。 – Paparazzi