Я пытаюсь реализовать следующую INotifyPropertyChanged Extension:INotifyPropertyChanged - событие остается нулевой
Automatically INotifyPropertyChanged (принят ответ) http://ingebrigtsen.info/2008/12/11/inotifypropertychanged-revisited/
Но я не могу понять, почему мой PropertyChanged EventHandler остается пустым. :(
Я сделал очень простой WPF приложений, чтобы проверить это, вот мой XAML код:
<StackPanel Orientation="Vertical">
<TextBox Text="{Binding Path=SelTabAccount.Test, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<TextBox Text="{Binding Path=SelTabAccount.TestRelated, UpdateSourceTrigger=PropertyChanged}"></TextBox>
</StackPanel>
И мой код позади:
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);
}
}
}
В коде позади вы увидите один класс (его частичный для просто случайного тестирования) с 2 свойствами, которые должны уведомить об изменении свойства, но ничего не происходит.
NotificationExtension является копией и вставкой из ссылок, предоставленных в top и находится во внешнем файле cs.
Я также попытался сделать образец с «нормальной» реализацией INotifyPropertyChanged, и это работает так, как ожидалось, но я не могу сделать это с этим классом расширения.
Надеюсь, вы поможете мне разобраться. Спасибо заранее.
Скопируйте и вставьте ошибки для победы. Забыл установить DataContext в моем XAML DataContext = "{Binding RelativeSource = {RelativeSource Self}}", теперь он работает. –