使用面向方面的编程从视图模型更新视图以获取只读属性



我在我的WPF项目中使用了面向方面的编程。我已经使用它来装饰我的视图模型与INotifyPropertyChanged接口和一个实现行为类,如下所示:

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"(执行相同工作的东西;

若要通知视图某个值已更改,必须使用已更改的属性引发 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();
}
}
}

此语法仅在从属性 setter 中调用时才有效,或者,当属性在类中的其他位置更改时,也可以调用它

OnPropertyChanged(nameof(IsDummy));

最新更新