簡體   English   中英

當其中一個發生更改時,如何重新評估多重綁定中的所有綁定?

[英]How do I reevaluate all bindings in a multibinding when one of them changes?

我有一個類似的設置:

var binding1 = new Binding($"Item[0].IsChecked")
   {
        Source = sender,
        UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
        ConverterParameter = dependant
    };

    var binding2 = new Binding($"Item")
    {
        Source = sender,
        Converter = new AllItemsAreEqualConverter(),
        ConverterParameter = dependant
    };
    var multiBinding = new MultiBinding
    {
        Bindings = { binding1, binding2 }, Converter = unifyingConverter
    };

我的 model 實現了 INotifyPropertyChanged 並更改 IsChecked 屬性會按預期重新評估 binding1。 然而在實踐中,通過這樣做,binding2 的結果也應該改變。 但是,我還想重新評估 binding2,這也是我的多重綁定的一部分。 當其中一個已更改時,是否可以告訴多重綁定重新評估所有子綁定?

只是為了添加一些可能有用也可能沒有幫助的上下文:我正在嘗試在 telerik 屬性網格中使用此行為,該屬性網格同時編輯一個或多個對象,我的想法是通過第一個綁定給出通知IsChecked 屬性的 PropertyChanged,這將重新評估我的綁定的 state,第二個綁定將檢查構成數據集的所有選定模型的相同屬性,以便在特定屬性定義的 Visibility 屬性上進行綁定(“在我的多重綁定中提到的unifyingConverter”將兩個子綁定中的值轉換為可見性)。

希望這是足夠的信息來回答我的問題。 謝謝:)

當其中一個已更改時,是否可以告訴多重綁定重新評估所有子綁定?

它“重新評估”自身並調用轉換器。 然后,在Convert方法中,您將可以訪問作為MultiBinding一部分的所有綁定的所有屬性的最新已知值。

因此,當為IsChecked屬性引發PropertyChanged事件時,將調用轉換器的Convert方法,然后在此方法中您可以獲得IsChecked ( values[0] ) 和Item ( values[1] ) 的最新值。

要為第二個屬性調用轉換器,您需要為Item屬性本身引發PropertyChanged事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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