我在WPF项目中使用面向方面的编程。我用它来通过INotifyPropertyChanged接口和一个实现行为类来装饰viewModels,如下所示:
Container.RegisterType<SomeViewModel>(
new Interceptor<VirtualMethodInterceptor>(),
new InterceptionBehavior(new LoggingBehavior(TraceEventType.Verbose)),
new AdditionalInterface<INotifyPropertyChanged>(),
new InterceptionBehavior<NotifyPropertyChangedBehavior>());
这很好。 但是当我只得到像:
这样的属性时public bool IsDummy
{
get { return _isDummy; }
}
如何从ViewModel调用OnPropertyChanged方法,该方法负责更新View(UI)。因此,如果将变量_isDummy更新为true,我应该可以调用与OnPropertyChanged(“ IsDummY”);
相同的功能答案 0 :(得分:0)
要通知视图某个值已更改,您必须使用已更改的属性引发OnPropertyChanged事件。这通常是通过标准实现来完成的:
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
然后在属性的设置器中
public bool IsDummy
{
set
{
if (_isDummy!= value)
{
_isDummy= value;
OnPropertyChanged();
}
}
}
仅当从属性设置器中调用此语法时,该语法才有效;或者,当属性在类中的其他位置更改时,也可以调用它。
OnPropertyChanged(nameof(IsDummy));