当我们在View和View-Model之间有一个双向绑定时,我们实现了具有以下事件的INotifyPropertyChanged接口:
// Summary:
// Occurs when a property value changes.
event PropertyChangedEventHandler PropertyChanged;
但是如果不实施INotifyPropertyChanged,我可以这样做吗?
答案 0 :(得分:2)
如果你不能实现INotifyPropertyChanged
(INPC)(或者你没有想要绑定的源代码),那么你应该在View Model中包装你想要绑定的内容。视图模型将为绑定实现INPC,并且必须获取/设置数据,可能是其他类。
答案 1 :(得分:1)
如果您想避免明确地实现INotifyPropertyChanged
,可以使用像PostSharp这样的代码编织工具。然后,实现INotifyPropertyChanged
就像
[NotifyPropertyChanged]
public class Shape
{
public double X { get; set; }
public double Y { get; set; }
}
您可以在此处找到更多详细信息:http://www.sharpcrafters.com/solutions/notifypropertychanged#。
答案 2 :(得分:1)
你当然可以。在更改视图模型时,您只需简单地放松更新视图的方法。现在有办法克服这个问题。
DataContext
,这样就可以评估所有绑定
再次,但这是非常昂贵的。 但显然这些都是非常奇怪的解决方法。值得一提的是,绑定到未实现INotifyPropertyChanged的对象通常较慢。
答案 3 :(得分:0)