为了账号安全,请及时绑定邮箱和手机立即绑定

监听业务逻辑的 PropertyChanged 事件

监听业务逻辑的 PropertyChanged 事件

C#
哔哔one 2022-01-09 17:10:41
我的问题可能是主观的,如果是,我很抱歉。我们正在开发一个具有一些自动保存功能的 UWP 应用程序,以便每次用户更新某些内容时,整个对象都会保存到文件系统中。为了做到这一点,我使用INotifyPropertyChanged接口来检测我的对象中的属性何时更改,或者PropertyChanged如果需要,子对象中的事件发生更改。当通过 2 路数据绑定出现更改时,我正在保存整个对象。类似的东西(代码可能包含拼写错误,不代表真实代码):public class ObjectViewModel : ViewModelBase // from MVVM-Light{    public ObjectViewModel()    {        Section1 = new SectionViewModel();        Section1.PropertyChanged += SectionOnPropertyChanged();        Section2 = new SectionViewModel();        Section2.PropertyChanged += SectionOnPropertyChanged();    }    public SectionViewModel Section1 { get; set; }    public SectionViewModel Section2 { get; set; }    private void SectionOnPropertyChanged(object sender, PropertyChangedEventArgs e)    {        RaisePropertyChanged();    }}public class SectionViewModel : ViewModelBase // from MVVM-Light{    private string _myString;    public SectionViewModel()    {        Property1 = new SubPropertyViewModel();        Property1.PropertyChanged += SubPropertyOnPropertyChanged();        Property2 = new SubPropertyViewModel();        Property2.PropertyChanged += SubPropertyOnPropertyChanged();        MyString = "some value";    }    public string MyString    {        get => _myString;        set => Set(ref _myString, value);    }    public SubPropertyViewModel Property1 { get; set; }    public SubPropertyViewModel Property2 { get; set; }    private void SectionOnPropertyChanged(object sender, PropertyChangedEventArgs e)    {        RaisePropertyChanged();    }}现在我可以听PropertyChanged我的事件ObjectViewModel来保存它。知道该MyString属性是 2-way 绑定到 a 的TextBox。并且 Property1 & 2 是 2-way 绑定到自定义UserControl(某种RadioButton)。但是我的同事告诉我,这些PropertyChanged事件是用于绑定的,附加到它们来做业务逻辑是不好的做法。他删除了监听PropertyChanged,Tapped为 UserControl添加了一个事件监听器,并Message通过Messenger. 字符串也是如此,他Message在更改时发送自定义。我真的不是它的修改的忠实粉丝。PropertyChanged为业务逻辑监听事件是一种不好的做法吗?
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超3个赞

在我看来,如果您熟悉 MVVM,您应该使用 ViewModel 中定义的命令来响应用户操作,并在模型层描述您的业务逻辑。绑定和“PropertyChangedEvent”中使用的属性不应包含任何业务逻辑,因为它可能会在未来减慢您的开发过程,通过变成“意大利面条代码”,因为您将添加更多功能并且您将很难调查属性之间的依赖关系。


查看完整回答
反对 回复 2022-01-09
?
FFIVE

TA贡献1797条经验 获得超6个赞

PropertyChanged点击了所有回调,它们都不是一个好的或坏的做法,所以它完全取决于你如何构建你的应用程序,如果你已经用PropertyChanged做,那么继续做它没有任何害处。另一方面,点击事件也将同样有效,因此要回答您的具体情况:

“不!PropertyChanged 用于业务逻辑是不错的做法。


查看完整回答
反对 回复 2022-01-09
  • 2 回答
  • 0 关注
  • 388 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号