gpt4 book ai didi

c# - MVVM:根据模型属性更新ViewModel属性

转载 作者:行者123 更新时间:2023-12-03 10:58:16 25 4
gpt4 key购买 nike

我在ViewModel中有一些属性,这些属性是根据“模型属性”更新来更新/重新计算的。我要求实现此方案的最佳方法吗?

我不喜欢订阅Model的PropertyChanged事件处理程序,然后更新ViewModel属性的方法。您如何处理这种情况?

最佳答案

订阅事件是正确的方法,但是我同意不希望使用PropertyChanged事件。我喜欢不考虑该事件,并根据需要创建自己的事件。这是我的方法:

public class Person : INotifyPropertyChanged
{
//custom events as needed
public event EventHandler NameChanged = delegate { };

//needed for INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged = delegate { };

private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
this.NotifyPropertyChanged();

//Fire my custom event
this.NameChanged(this, EventArgs.Empty);
}
}
}

private int _age;
public int Age
{
get { return _age; }
set
{
if (_age != value)
{
_age = value;
this.NotifyPropertyChanged();

//I am not exposing a custom event for this property.
}
}

private void NotifyPropertyChanged([CallerMemberName] string propertyName = null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

在此示例中,出于UI的目的,名称和年龄是可观察的,但对于UI之外的任何内容,名称都是可观察的。现在,如果删除任何PropertyChanged通知,如果您的ViewModel订阅了PropertyChanged并解析了字符串,则不会意外导致该运行时错误。

关于c# - MVVM:根据模型属性更新ViewModel属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30742105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com