Вот как я реализую INotifyPropertyChanged
вINotifyPropertyChanged при экспонировании сырьевой модели вместо индивидуальных свойств
public class ViewModel : INotifyPropertyChanged
{
public Person Person1 { get; set; }
public Person Person2 { get; set; }
public string Person1Name
{
get { return Person1.Name; }
set
{
Person1.Name = value;
RaisePropertyChangedEvent("Person1Name");
}
}
public string Person2Name
{
get { return Person2.Name; }
set
{
Person2.Name=value;
RaisePropertyChangedEvent("Person2Name");
}
}
}
//This is the Model
public class Person
{
private string _name;
public string Name { get; set; }
}
И XAML Я использую для этого типа реализации -
<Label Text="{Binding Path=Person1Name}"/>
<Label Text="{Binding Path=Person2Name}"/>
То, что я хочу сделать, - это IRaisePropertyChangedEvent, когда какое-либо свойство в модели изменяется, но я не хочу явно раскрывать свойство, как я там делаю. Я просто хочу разоблачить всю модель, и всякий раз, когда свойство внутри модели изменяется, оно должно возбуждать событие уведомления. Но я не хочу, чтобы модель реализовала INotifyPropertyChanged, я хочу, чтобы ViewModel реализовал ее. Поэтому в основном то, что я ищу что-то вроде этого -
public class ViewModel : INotifyPropertyChanged
{
public Person Person1
{
get { return _person1; }
set
{
_person1 = value;
RaisePropertyChangedEvent("Person1");
//So, whenever a property within my Person1 changes, raise event for that property.
}
}
public Person Person2
{
get { return _person2; }
set
{
_person2 = value;
RaisePropertyChangedEvent("Person2");
}
}
}
XAML:
<Label Text="{Binding Path=Person1.Name}"/>
<Label Text="{Binding Path=Person2.Name}"/>
Как мне это сделать? Если думаю, вопрос непонятен, прокомментируйте, и я постараюсь лучше.
Вот почему я не люблю эту конструкцию. Хотя сначала это кажется быстрым способом создания модели просмотра, в конце концов, это окажется грязным. –