gpt4 book ai didi

c# - Fody PropertyChanged 不会触发另一个属性

转载 作者:行者123 更新时间:2023-11-30 15:24:33 27 4
gpt4 key购买 nike

我正在处理一个 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; }
}

当我调用 SavePerson()(在 MyViewModel 中)时,它不会触发 HasCardSet 属性。我添加了 PropertyChangedNotificationInterceptor 并看到属性“Card”在目标“People”上发生了变化。但是我在 HasCardSet 中的断点没有触发。

最佳答案

您的 HasCardSet 属性必须在 Person 类中声明。

然后,按照 documentation 中的建议,添加这个方法:

public void OnCardChanged()
{
HasCardSet = Card != null;
}

这将触发预期的 PropertyChanged 事件。

请注意,您的Binding 应该将您的Person 对象作为DataContext,而不是直接将您的View Model。

关于c# - Fody PropertyChanged 不会触发另一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32715023/

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