Qu'attendiez-vous? L'événement PropertyChanged est utilisé par le code d'interface utilisateur, mais pas en ce sens que vous écrivez. Les contrôles n'implémentent jamais INPC (abréviation de INotifyPropertyChanged), ils sont liés à l'objet que ont implémenté INPC. De cette façon, certaines propriétés de l'interface utilisateur, par ex. la propriété Text sur le contrôle TextBox est liée à une propriété sur une telle classe. C'est la base de l'architecture MVVM.
exemple, vous pouvez écrire le code XAML suivant:
<TextBlock x:Name="txtBox" Text="{Binding Title}" />
et que vous définissez le contexte de données pour TextBlock (ou l'un de ses ancêtres, DataContext se propage) dans le code de la manière suivante:
txtBox.DataContext = new Movie {Title = "Titanic"};
Et maintenant pour la classe elle-même:
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");
}
}
}
maintenant, chaque fois que vous ch ange la propriété Title, que ce soit dans le code ou via une autre liaison, l'interface utilisateur sera automatiquement actualisée. Google pour la liaison de données et MVVM.
Cela ne fonctionne pas comme vous l'avez fait. Créez simplement une classe supplémentaire et implémentez l'interface de notification ici et appliquez cette classe au DataContext de UserControl. Et cela fonctionnera comme vous avez besoin. –