Я работаю над проектом WPF. Чтобы предотвратить много кода котла, я использую Fody PropertyChanged. Это фрагмент из моей проблемы: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
и вижу, что свойство «Карточка» меняется на целевые «Люди». Но моя точка останова в HasCardSet
не срабатывает.
Как бы привязаны теперь, что HasCardSet изменился, если он не является частью Лица? – netaholic
Ну, у моего Лица есть другое свойство Info (класс), и у него есть имя свойства string. (Person.Info.Name) Если я изменю его в коде, моя привязка в XAML будет обновлена. Так почему это работает, а это не так? – RvdK
@OP: Это зависит от того, как вы обновляете свойство (задаете ли вы свойство Person's Info или просто имя этого свойства?) И само связывание. Больше вашего кода может помочь ... – xum59