INotifyPropertyChanged - Zdarzenie pozostaje puste
Usiłuję zaimplementować następujące rozszerzenie INotifyPropertyChanged:
Automatycznie INotifyPropertyChanged (zaakceptowana odpowiedź)http://ingebrigtsen.info/2008/12/11/inotifypropertychanged-revisited/
Ale nie mogę zrozumieć, dlaczego mój PropertyChanged EventHandler pozostaje zerowy. :(
Zrobiłem bardzo prostą aplikację WPF, aby ją przetestować, oto mój kod XAML:
<StackPanel Orientation="Vertical">
<TextBox Text="{Binding Path=SelTabAccount.Test, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<TextBox Text="{Binding Path=SelTabAccount.TestRelated, UpdateSourceTrigger=PropertyChanged}"></TextBox>
</StackPanel>
A mój kod za:
public partial class MainWindow : Window, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private TabAccount _selTabAccount;
public TabAccount SelTabAccount
{
get { return _selTabAccount; }
set
{
_selTabAccount = value;
PropertyChanged.Notify(() => this.SelTabAccount);
}
}
public MainWindow()
{
InitializeComponent();
SelTabAccount = new TabAccount()
{
Test = "qwer",
TestRelated = ""
};
}
}
public partial class TabAccount : INotifyPropertyChanged
{
private string _test;
public string Test
{
get { return _test; }
set
{
_test = value;
PropertyChanged.Notify(() => this.Test);
PropertyChanged.Notify(() => this.TestRelated);
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
public partial class TabAccount
{
private string _testRelated;
public string TestRelated
{
get
{
_testRelated = Test + "_Related";
return _testRelated;
}
set
{
_testRelated = value;
PropertyChanged.Notify(() => this.TestRelated);
}
}
}
W znajdującym się za nim kodzie zobaczysz jedną klasę (jej częściową dla tylko losowych testów) z 2 właściwościami, które powinny powiadomić o zmianie właściwości, ale nic się nie dzieje.
NotificationExtension to kopia i wklej z linków podanych u góry i znajduje się w zewnętrznym pliku cs.
Próbowałem również wykonać próbkę z „normalną” implementacją INotifyPropertyChanged i działa to zgodnie z oczekiwaniami, ale nie mogę tego zrobić z tą klasą rozszerzenia.
Mam nadzieję, że pomożesz mi to zrozumieć. Z góry dziękuję.