我的问题可能是主观的,很抱歉。

我们正在开发具有某些自动保存功能的UWP应用程序,以便每次用户更新某些内容时,整个对象都会保存到文件系统中。

为此,我使用了INotifyPropertyChanged接口(interface)来检测对象中的属性何时更改,或者需要时通过子对象中的PropertyChanged事件进行更改。
当通过双向数据绑定(bind)出现更改时,我正在保存整个对象。
诸如此类(代码可能包含错别字,并不代表真实代码):

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();
    }
}

现在,我可以听我的PropertyChangedObjectViewModel事件进行保存了。
知道MyString属性是双向绑定(bind)到TextBox的。
而且Property1和2是双向绑定(bind)到自定义UserControl(某种RadioButton)的。

但是我的同事告诉我,PropertyChanged事件用于绑定(bind),将它们附加到业务逻辑上是不好的做法。
然后,他删除了对PropertyChanged的监听,在UserControl的Tapped事件上添加了一个监听器,并通过Message发送了一些自定义Messenger
字符串也一样,更改后他将在其中发送自定义Message

我真的不喜欢它的修改。

PropertyChanged事件获取业务逻辑是一种不好的做法吗?

最佳答案

PropertyChanged 都使用回调,它们都不是好方法,因此,这完全取决于您是如何构建应用程序的,如果您已经使用 PropertyChanged 来完成它,则继续使用它没有伤害。另一方面,点击事件也将同样有效,因此请回答您的特定情况:

“不!对于业务逻辑,PropertyChanged并不是一个坏习惯。

关于c# - 监听PropertyChanged事件以获取业务逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52252943/

10-11 23:10