2016-03-04 52 views
0

保證在IValueConverter ConvertBack調用其他視圖會更新以及如何執行它?是否保證在IValueConverter ConvertBack調用其他視圖會更新?

我在列表中有4個參數。每對他們可以從另外兩個的方式來計算,如:

A = f(a,b) 
B = f2(a,b) 
a = f3(A,B) 
b = f4(A,B) 

我把它們都在一個在ItemsControl的渲染。我創建了一個IValueConverter,可以按需轉換和轉換。轉換期間其他三個項目的一個項目值的返回在源列表中更新。 我不知道是否保證一個List Item ConvertBack調用其他人會被調用?

+0

'ConvertBack'從不調用視圖來更新它只將目標值轉換爲源,然後傳遞給綁定屬性,並且如果該屬性引發'INPC.PropertyChanged'事件,它應該被其他綁定視圖拾取。 – dkozl

回答

1

不,這不能保證。 IValueConverter只會轉換應該在模型上設置的值。

要根據該更改進行更新,您的模型應該實施INotifyPropertyChanged並在設置屬性後提升PropertyChanged事件。

這裏是實現INotifyPropertyChanged類的例子:

public class TestClass : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    private string property; 
    public string Property 
    { 
     get { return property; } 
     set 
     { 
      property = value; 
      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Property))); 
     } 
    } 
} 

請注意,您通常會使用實現該接口(由所有MVVM庫和框架提供)的基類。

相關問題