[英]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.