INotifyPropertyChanged WPF
Was ist der Zweck von INotifyPropertyChanged. Ich weiß, dieses Ereignis wird ausgelöst, wenn eine Eigenschaft geändert wird, aber wie kann die View/UI weiß, dass dieses Ereignis ausgelöst wird:
Hier ist mein Customer-Klasse, implementiert das INotifyPropertyChanged event:
public class Customer : INotifyPropertyChanged
{
private string _firstName;
public string LastName { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if(PropertyChanged != null)
PropertyChanged(this,new PropertyChangedEventArgs(propertyName));
}
public string FirstName
{
get { return _firstName; }
set
{
_firstName = value;
OnPropertyChanged("FirstName");
}
}
}
Aber jetzt, wie zu Benachrichtigen, die Benutzeroberfläche, die Eigenschaft geändert hat. Wie, wenn der Benutzer weist null oder leer auf den Vornamen, wie kann ich eine MessageBox angezeigt werden auf der Benutzeroberfläche.
InformationsquelleAutor | 2009-06-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
INotifyPropertyChanged ermöglicht WPF-UI-Elemente (über den standard data binding-Mechanismen) zu abonnieren, das PropertyChanged-Ereignis und aktualisieren sich automatisch. Zum Beispiel, wenn Sie hatte einen TextBlock anzeigen FirstName-Eigenschaft, durch die Verwendung von INotifyPropertyChanged, können Sie die Anzeige auf einem Formular, und es wird automatisch up to date bleiben, wenn die FirstName-Eigenschaft im code geändert.
Der Blick direkt abonniert die event - was sagt es alles notwendige. Das Ereignis enthält den Namen der geänderten Eigenschaft, so dass, wenn ein UI-element gebunden ist, die Eigenschaft, updates.
InformationsquelleAutor Reed Copsey
WPF wissen können, denn es kann überprüfen, ob ein Objekt diese Schnittstelle implementiert, dann CASTET das Objekt zu gesagt-Schnittstelle und für die Veranstaltung anmelden. Es kann dann auslösen der Bindung-Infrastruktur, um die Anzeige zu aktualisieren. Wenn Sie reagieren wollen, wie gut können Sie sich anmelden für das gleiche Ereignis.
Wenn Sie wirklich nicht wollen, legen sich auf die Veranstaltung und das tun, was Sie tun möchten, im Imperativ Mode, können Sie in der Lage sein, es zu tun deklarativ durch eine Kombination von z.B. a-Wandler für string -> bool encapsulating Ihre Logik und fahren dann einige Visibility-Eigenschaft mit der daraus resultierenden bool. Aber ich sehe nicht, wie ein pop-up-MessageBox von in XAML.
InformationsquelleAutor flq
EDIT: ich Las Ihre Frage und einige Ihrer Kommentare. Hier ist eine mögliche Lösung die Verwendung der DataContextChanged Ereignis und die INotifyPropertyChanged-Schnittstelle, die auf Ihrem Kunden-Objekt. Sie sollten auch einen Blick in Data Binding Validierung in WPF und .Net 3.5.
InformationsquelleAutor user7116