【发布时间】:2018-11-13 13:14:12
【问题描述】:
我想在视图模型中绑定两个属性。
public class MainViewModel : INotifyPropertyChanged
{
public string Format
{
get { return format; }
set
{
if (format != value)
{
format = value;
OnPropertyChanged("Format");
}
}
}
public string FilterString
{
get { return filter; }
set { filter = SomeFunction(value); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
}
}
所以当 Format 属性发生变化时,它会调用 FilterString 的 set 方法。
这样做的正确方法是什么。
【问题讨论】:
-
在Format属性的setter中设置FilterString属性?
-
我不明白这个问题 - 从
Format的设置者你可以打电话给FilterString = whatyouwant。只是不要忘记OnPropertyChanged("FilterString")。 -
好的,我明白了,但这是在类中绑定属性的正确方法吗?或者应该使用事件或其他设计模式。
-
FilterString 似乎应该是一个只读属性,它返回 SomeFunction 的值。 SomeFunction 是否使用了 Format 属性的值,或者这两个属性有什么关系?
-
属性必须执行什么样的逻辑(必须在其设置器中实现)与属性绑定无关。我可能是错的,但也许你的问题意味着它是否是在属性设置器中做更多事情的好方法,这可能会延迟处理(= UI)。然后您可以异步执行操作...
标签: c# wpf mvvm binding viewmodel