Jak zaimplementować właściwość zależności (WPF .NET)
W tym artykule opisano sposób implementowania właściwości zależności przy użyciu DependencyProperty pola do obsługi właściwości środowiska uruchomieniowego języka wspólnego (CLR). Właściwości zależności obsługują kilka zaawansowanych funkcji systemu właściwości Windows Presentation Foundation (WPF). Te funkcje obejmują style, powiązanie danych, dziedziczenie, animację i wartości domyślne. Jeśli chcesz zdefiniować właściwości do obsługi tych funkcji, zaimplementuj właściwości jako właściwość zależności.
Ważne
Dokumentacja przewodnika dla komputerów dla platform .NET 7 i .NET 6 jest w budowie.
Przykład
W poniższym przykładzie pokazano, jak zarejestrować właściwość zależności, wywołując metodę Register . Metoda Register
zwraca DependencyProperty wystąpienie o nazwie identyfikator właściwości zależności. Identyfikator jest przechowywany w static readonly
polu i zawiera nazwę i cechy właściwości zależności.
Pole identyfikatora musi być zgodne z konwencją <property name>Property
nazewnictwa . Jeśli na przykład zarejestrujesz właściwość zależności o nazwie Location
, pole identyfikatora powinno mieć nazwę LocationProperty
. Jeśli nie uda Ci się postępować zgodnie z tym wzorcem nazewnictwa, projektanci WPF mogą nie zgłaszać właściwości poprawnie, a aspekty aplikacji stylu systemu właściwości mogą nie zachowywać się zgodnie z oczekiwaniami.
W poniższym przykładzie nazwa właściwości zależności i jej metody dostępu CLR to HasFish
, więc pole identyfikatora ma nazwę HasFishProperty
. Typ właściwości zależności to Boolean i typ właściciela rejestrujący właściwość zależności to Aquarium
.
Możesz określić domyślne metadane dla właściwości zależności. W tym przykładzie ustawiono wartość false
domyślną dla HasFish
właściwości zależności.
public class Aquarium : DependencyObject
{
public static readonly DependencyProperty HasFishProperty =
DependencyProperty.Register(
name: "HasFish",
propertyType: typeof(bool),
ownerType: typeof(Aquarium),
typeMetadata: new FrameworkPropertyMetadata(defaultValue: false));
public bool HasFish
{
get => (bool)GetValue(HasFishProperty);
set => SetValue(HasFishProperty, value);
}
}
Public Class Aquarium
Inherits DependencyObject
Public Shared ReadOnly HasFishProperty As DependencyProperty =
DependencyProperty.Register(
name:="HasFish",
propertyType:=GetType(Boolean),
ownerType:=GetType(Aquarium),
typeMetadata:=New FrameworkPropertyMetadata(defaultValue:=False))
Public Property HasFish As Boolean
Get
Return GetValue(HasFishProperty)
End Get
Set(value As Boolean)
SetValue(HasFishProperty, value)
End Set
End Property
End Class
Aby uzyskać więcej informacji na temat sposobu i dlaczego zaimplementować właściwość zależności, a nie tylko tworzenie kopii zapasowej właściwości CLR z polem prywatnym, zobacz Omówienie właściwości zależności.
Zobacz też
.NET Desktop feedback
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla