Instrukcje: implementowanie powiadomienia o zmianie właściwości
Artykuł
Aby obsługiwać OneWay lub powiązanie TwoWay, aby umożliwić właściwościom docelowym powiązania automatyczne odzwierciedlanie dynamicznych zmian źródła powiązania (na przykład w celu automatycznego zaktualizowania okienka podglądu podczas edytowania formularza przez użytkownika), klasa musi dostarczyć odpowiednie powiadomienia o zmianie właściwości. W tym przykładzie pokazano, jak utworzyć klasę, która implementuje INotifyPropertyChanged.
Przykład
Aby zaimplementować INotifyPropertyChanged należy zadeklarować zdarzenie PropertyChanged i utworzyć metodę OnPropertyChanged. Następnie dla każdej właściwości, dla której chcesz zmienić powiadomienia, należy wywołać OnPropertyChanged za każdym razem, gdy właściwość zostanie zaktualizowana.
C#
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespaceSDKSample
{
// This class implements INotifyPropertyChanged// to support one-way and two-way bindings// (such that the UI element updates when the source// has been changed dynamically)publicclassPerson : INotifyPropertyChanged
{
privatestring name;
// Declare the eventpublicevent PropertyChangedEventHandler PropertyChanged;
publicPerson()
{
}
publicPerson(stringvalue)
{
this.name = value;
}
publicstring PersonName
{
get { return name; }
set
{
name = value;
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged();
}
}
// Create the OnPropertyChanged method to raise the event// The calling member's name will be used as the parameter.protectedvoidOnPropertyChanged([CallerMemberName] string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
}
Imports System.ComponentModel
Imports System.Runtime.CompilerServices
' This class implements INotifyPropertyChanged
' to support one-way and two-way bindings
' (such that the UI element updates when the source
' has been changed dynamically)
Public Class Person
Implements INotifyPropertyChanged
Private personName As String
Sub New()
End Sub
Sub New(ByVal Name As String)
Me.personName = Name
End Sub
' Declare the event
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public Property Name() As String
Get
Return personName
End Get
Set(ByVal value As String)
personName = value
' Call OnPropertyChanged whenever the property is updated
OnPropertyChanged()
End Set
End Property
' Create the OnPropertyChanged method to raise the event
' Use the name of the member that called this method in place of name
Protected Sub OnPropertyChanged(<CallerMemberName> Optional name As String = Nothing)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(name))
End Sub
End Class
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
Opinia o produkcie .NET Desktop feedback
.NET Desktop feedback to projekt typu open source. Wybierz link, aby przekazać opinię:
Dołącz do serii meetup, aby tworzyć skalowalne rozwiązania sztucznej inteligencji oparte na rzeczywistych przypadkach użycia z innymi deweloperami i ekspertami.
Utwórz interfejs użytkownika z powiązaniem danych. Interfejs użytkownika automatycznie aktualizuje się na podstawie najnowszych danych, a dane są aktualizowane w odpowiedzi na zmiany w interfejsie użytkownika.