Die INotifyPropertyChanged - Ereignis bleibt null
Ich versuche zu implementieren ist die folgende Erweiterung von INotifyPropertyChanged:
Automatisch INotifyPropertyChanged (akzeptierte Antwort)
http://ingebrigtsen.info/2008/12/11/inotifypropertychanged-revisited/
Aber ich kann nicht herausfinden, warum meine PropertyChanged-Event-Handler bleibt null. 🙁
Habe ich eine sehr einfache WPF-Anwendung, um es zu testen, hier ist mein XAML Code:
<StackPanel Orientation="Vertical">
<TextBox Text="{Binding Path=SelTabAccount.Test, UpdateSourceTrigger=PropertyChanged}"></TextBox>
<TextBox Text="{Binding Path=SelTabAccount.TestRelated, UpdateSourceTrigger=PropertyChanged}"></TextBox>
</StackPanel>
Und mein code hinter:
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);
}
}
}
In der code-behind werden Sie sehen, eine Klasse (teilweise nur für Stichproben-Tests) mit 2 Eigenschaften, die benachrichtigt werden sollen, eine Eigenschaft zu ändern, aber nichts passiert.
Den NotificationExtension ist ein copy und paste aus den links oben und ist in einem externen cs-Datei.
Habe ich auch versucht zu tun, die Probe mit den "normalen" INotifyPropertyChanged-Implementierung und das funktioniert wie erwartet, aber ich kann nicht machen es geschehen mit dieser Erweiterung Klasse.
Hoffe Ihr könnt mir helfen, es herauszufinden.
Vielen Dank im Voraus.
InformationsquelleAutor Rand Random | 2013-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bindung funktioniert nur, wenn Sie einige Datenquelle, um die visuellen Objekte. Wenn Sie nicht bieten keine datasource und wollen zu Graben, in die die Eigenschaften der Bindung wird nicht funktionieren.
Unter Ihrem MainWindow-Konstruktor, legen Sie die DataContext-Eigenschaft des Fensters, um eine datasource. Zum Beispiel:
Im wesentlichen macht die MainWindow-Eigenschaften, die für die Bindung an die visuelle Struktur des MainWindow-Elemente.
InformationsquelleAutor JSJ
Haben Sie DataContext des Fensters. Sie können dies tun, in construnctor der Fenster nach initializecomponent.
dies sollte den trick tun.
Dank
InformationsquelleAutor Nitin