是否保证在 IValueConverter ConvertBack 调用时其他视图会更新?
Is it guaranteed that on IValueConverter ConvertBack call other views would update?
是否保证在调用 IValueConverter ConvertBack 时其他视图会更新以及如何强制执行?
我在一个列表中有 4 个参数。它们中的每一对都可以通过以下方式从另外两个计算出来:
A = f(a,b)
B = f2(a,b)
a = f3(A,B)
b = f4(A,B)
我将它们全部呈现在 ItemsControl 中。我创建了一个 IValueConverter,它可以按需进行 Convert 和 ConvertBack。在一个项目的转换返回期间,其他三个项目的值在源列表中更新。
我想知道是否保证在一个List Item ConvertBack 调用之后其他的会被调用?
不,这不能保证。 IValueConverter
只转换应该在模型上设置的值。
要根据该更改更新视图,您的模型应在设置 属性 后实施 INotifyPropertyChanged
and raise the PropertyChanged
事件。
这是一个 class 的例子,它实现了 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)));
}
}
}
请注意,您通常会使用实现该接口的基础 class(由所有 MVVM 库和框架提供)。
是否保证在调用 IValueConverter ConvertBack 时其他视图会更新以及如何强制执行?
我在一个列表中有 4 个参数。它们中的每一对都可以通过以下方式从另外两个计算出来:
A = f(a,b)
B = f2(a,b)
a = f3(A,B)
b = f4(A,B)
我将它们全部呈现在 ItemsControl 中。我创建了一个 IValueConverter,它可以按需进行 Convert 和 ConvertBack。在一个项目的转换返回期间,其他三个项目的值在源列表中更新。 我想知道是否保证在一个List Item ConvertBack 调用之后其他的会被调用?
不,这不能保证。 IValueConverter
只转换应该在模型上设置的值。
要根据该更改更新视图,您的模型应在设置 属性 后实施 INotifyPropertyChanged
and raise the PropertyChanged
事件。
这是一个 class 的例子,它实现了 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)));
}
}
}
请注意,您通常会使用实现该接口的基础 class(由所有 MVVM 库和框架提供)。