是否保证在IValueConverter ConvertBack上调用其他视图会更新?

时间:2016-03-04 20:36:07

标签: c# wpf xaml binding ivalueconverter

是否保证在IValueConverter ConvertBack上调用其他视图会更新以及如何强制执行它?

我在List中有4个参数。它们中的每一对都可以通过以下方式从另外两个计算:

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

我将它们全部呈现在ItemsControl中。我创建了一个可以按需转换和转换的IValueConverter。转换期间返回一个项目的其他三个值将在源列表中更新。  我想知道是否可以保证在一个List Item ConvertBack调用后会调用其他人吗?

1 个答案:

答案 0 :(得分: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库和框架提供)。