我的问题可能是主观的,很抱歉。
我们正在开发具有某些自动保存功能的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();
}
}
现在,我可以听我的
PropertyChanged
的ObjectViewModel
事件进行保存了。知道
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/