2016-03-04 57 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库和框架提供)的基类。

相关问题