Was haben Sie erwartet? PropertyChanged-Ereignis wird von UI-Code verwendet, aber nicht in dem Sinne, in dem Sie schreiben. Controls implementieren nie INPC (kurz für INotifyPropertyChanged), sie sind verpflichtet, das Objekt zu implementieren, das INPC implementiert hat. Auf diese Weise können bestimmte UI-Eigenschaften, z.B. Die Text -Eigenschaft für das TextBox-Steuerelement ist an eine Eigenschaft für eine solche Klasse gebunden. Dies ist die Grundlage der MVVM-Architektur.
Beispiel, würden Sie das folgende XAML-Code schreiben:
<TextBlock x:Name="txtBox" Text="{Binding Title}" />
Und Sie setzen den Datenkontext für TextBlock- im Code auf folgende Weise (oder einem seiner Vorgänger, ist Datacontext propagiert):
txtBox.DataContext = new Movie {Title = "Titanic"};
Und nun die Klasse selbst:
public class Movie : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
private string _title;
public string Title
{
get { return _title; }
set
{
if (_title == value) return;
_title = value;
NotifyPropertyChanged("Title");
}
}
}
nun, wenn Sie ch Wenn Sie die Titeleigenschaft auswählen, wird die Benutzeroberfläche automatisch aktualisiert, unabhängig davon, ob sie im Code oder über eine andere Bindung erfolgt. Google für Datenbindung und MVVM.
Es funktioniert nicht wie du getan hast. Erstellen Sie einfach eine zusätzliche Klasse und implementieren Sie die Notification Interface dort und wenden Sie diese Klasse auf den DataContext des UserControls an. Und es wird funktionieren, wie du es brauchst. –