Rvd*_*vdK 3 c# fody-propertychanged
我正在做一个 WPF 项目。为了防止大量锅炉代码,我使用了 Fody PropertyChanged。这是我的问题的一个片段:
[ImplementPropertyChanged]
public class MyViewModel : MyViewModelBase
{
public bool HasCardSet
{
get
{
return Person != null && Person.Card != null;
}
}
public void SavePerson()
{
Person.Card = new Card();
}
}
[ImplementPropertyChanged]
public class MyViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public Person Person { get; set; }
}
[ImplementPropertyChanged]
public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public Card Card { get; set; }
}
[ImplementPropertyChanged]
public class Card : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string Name { get; set; }
public ObservableCollection<SomeOtherClass> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我调用SavePerson()(in MyViewModel) 时,它不会触发该HasCardSet属性。我已经添加PropertyChangedNotificationInterceptor并看到目标“人物”上的属性“卡片”发生了变化。但是我的断点HasCardSet没有触发。
您的HasCardSet财产必须在Person类中声明。
然后,按照文档中的建议,添加此方法:
public void OnCardChanged()
{
HasCardSet = Card != null;
}
Run Code Online (Sandbox Code Playgroud)
这将触发预期的PropertyChanged事件。
请注意,您Binding应该将您的Person对象作为DataContext,而不是直接使用您的视图模型。