Ten artykuł został przetłumaczony przez maszynę. Aby wyświetlić jego treść w języku angielskim, zaznacz pole wyboru Angielski. Możesz też wyświetlić angielski tekst w okienku wyskakującym, przesuwając wskaźnik myszy nad konkretny tekst”.
Tłumaczenie
Angielski

Zdarzenia zmiany właściwości

 

Data opublikowania: październik 2016

Windows Presentation Foundation (WPF) definiuje kilka zdarzeń, które są wywoływane w odpowiedzi na zmianę wartości właściwości. Często właściwość jest Właściwość zależności. Czasami jest samym zdarzeniu kierowanego zdarzenia i czasami standardowego środowisko uruchomieniowe języka wspólnego (CLR) zdarzeń. Definicji zdarzenia różni się w zależności od scenariusza, ponieważ niektóre zmiany właściwości odpowiedniej są wysyłane za pośrednictwem drzewo elementów inne zmiany właściwości są zwykle tylko z zadaniem, do której zmienić właściwości obiektu.

Nie wszystkie zdarzenia, które zgłaszają zmiany właściwości są jawnie oznaczone jako zdarzenie zmiany właściwości, albo na podstawie wzorca podpisu lub wzorzec nazw. Ogólnie rzecz biorąc, opis zdarzenia w zestaw SDK dokumentacji wskazuje, czy zdarzenie jest bezpośrednio związane Zmień wartość właściwości zawiera odsyłacze, właściwości i zdarzeń.

Niektóre zdarzenia za pomocą typu danych zdarzenia i delegata jawnie używane w przypadku zdarzenia zmiany właściwości. Typ danych zdarzenia jest RoutedPropertyChangedEventArgs<T>, i jest delegat RoutedPropertyChangedEventHandler<T>. Dane dotyczące zdarzeń i delegata ma parametr typu ogólnego, który jest używany do określenia rzeczywisty typ zmiany właściwości podczas definiowania programu obsługi. Dane zdarzenia zawierają dwie właściwości OldValue i NewValue, które są następnie przekazywany jako argument typu w zdarzeniu danych.

"Trasowane" część nazwy wskazuje, że zdarzenie zmiany właściwości jest kierowanego zdarzenia. Zaletą routing zdarzenie zmiany właściwości jest to najwyższy poziom formantu może odbierać zdarzenia zmiany właściwości zmiana wartości właściwości elementów podrzędnych (części złożonego formantu). Na przykład, można utworzyć formant, który zawiera RangeBase takich jak kontrolować Slider. Jeśli wartość Value zmiany właściwości w ramach suwaka, może zaistnieć potrzeba obsługi zmiana kontroli nadrzędnej, a nie części.

Ponieważ stara wartość i nową wartość, może być kuszące do użycia tej obsługi zdarzeń jako moduł sprawdzania poprawności wartości właściwości. Jednak to nie jest zamiar projektowania większości zdarzenia zmiany właściwości. Ogólnie rzecz biorąc wartości są dostarczane, dzięki czemu można wykonywać operacje na tych wartości w innych obszarach logiki kodu, ale faktycznie zmiana wartości z w ramach programu obsługi zdarzeń nie jest zalecane i może spowodować niezamierzone rekursji w zależności od sposobu implementacji programu obsługi.

Jeśli Twoje właściwość jest właściwością niestandardowe zależności lub jeśli pracujesz z klasy pochodnej gdzie zdefiniowano kodu podczas tworzenia wystąpienia, jest znacznie lepiej mechanizm śledzenia zmian właściwości, które jest wbudowana w WPF systemu właściwość: wywołania zwrotne systemu właściwości CoerceValueCallback i PropertyChangedCallback. Aby uzyskać więcej informacji na temat korzystania z WPF Zobacz właściwości systemu do sprawdzania poprawności i wymuszanie, Zależność wartości wywołania zwrotnego i walidacji i Niestandardowe właściwości zależności.

Jest inną parę typy, które są częścią scenariusz zdarzenie zmiany właściwości DependencyPropertyChangedEventArgs i DependencyPropertyChangedEventHandler. Zdarzenia zmiany właściwości nie są kierowane; są one standardowego CLR zdarzenia. DependencyPropertyChangedEventArgs Dane zdarzenia niezwykłych typ raportowania, ponieważ nie pochodzi od EventArgs; DependencyPropertyChangedEventArgs to struktura nie klasy. 

Zdarzenia, które używają DependencyPropertyChangedEventArgs i DependencyPropertyChangedEventHandler są nieco bardziej popularne niż RoutedPropertyChanged zdarzenia. Na przykład zdarzenia, które korzysta z tych typów IsMouseCapturedChanged.

Podobnie jak RoutedPropertyChangedEventArgs<T>, DependencyPropertyChangedEventArgs również raporty starej i nowej wartości właściwości. Ponadto tego samego o co można z wartościami kwestie; Ogólnie rzecz biorąc nie zaleca próbę zmiany wartości ponownie na nadawcy w odpowiedzi na zdarzenie.

Koncepcja blisko związane zdarzenie zmiany właściwości jest wyzwalacz właściwości. Wyzwalacz właściwości jest tworzony w stylu lub szablonu i umożliwia utworzenie zachowania warunkowe na podstawie wartości właściwości, którym przypisano wyzwalacz właściwości.

Właściwości wyzwalacza właściwości musi być właściwość zależności. Ona może być (i często) właściwości zależności tylko do odczytu. Dobry wskaźnik dla podczas właściwości zależności udostępnianych przez formant jest co najmniej częściowo bardzo wyzwalacz właściwości jest, jeśli nazwa właściwości zaczyna się od "To". Właściwości, które mają tej nazwy są często właściwości tylko do odczytu zależności Boolean gdzie podstawowy scenariusz dla właściwości zgłasza stan formantu, który może mieć konsekwencje do interfejsu użytkownika w czasie rzeczywistym, a w związku z tym jest kandydatem wyzwalacza właściwości.

Niektóre z tych właściwości również mają zdarzenie zmiany właściwości dedykowanego. Na przykład, właściwość IsMouseCaptured ma zdarzenie zmiany właściwości IsMouseCapturedChanged. Samą właściwość jest tylko do odczytu, jej wartością regulowany przez system wprowadzania danych, a następnie uruchamia system wprowadzania IsMouseCapturedChanged dla każdej zmiany w czasie rzeczywistym.

W porównaniu do zdarzenia zmiany właściwości wartość PRAWDA, za pomocą wyzwalacza właściwości do działania na zmiany właściwości ma pewne ograniczenia.

Wyzwalacze właściwości pośrednictwa logiki dokładnego dopasowania. Należy określić właściwość i wartość, która wskazuje określoną wartość, dla której wyzwalacz będzie działać. Na przykład: <Setter Property="IsMouseCaptured" Value="true"> ... </Setter>. Ze względu na to ograniczenie większość właściwości wyzwalacza użycia będą Boolean, lub właściwości, które przyjmują wartość wyliczenia dedykowanego, gdzie zakres możliwych wartości jest zarządzany, aby zdefiniować wyzwalacza w każdym przypadku. Wyzwalacze właściwości może istnieć tylko dla specjalnych wartości, takich jak gdy liczba elementów osiągnie zero, i nie byłoby żaden wyzwalacz, który kont w przypadkach, gdy wartość właściwości ponownie zmienia się od zera (wyzwalacza INSTEAD OF we wszystkich przypadkach, może być konieczne kod obsługi zdarzeń w tym miejscu lub domyślne zachowanie który przełącza od stanu wyzwalacza ponownie, gdy wartość jest różna od zera).

Składnia właściwości wyzwalacza jest analogiczne do instrukcji "if" w programowaniu. Jeśli warunek wyzwalacza jest spełniony, następnie "treść" wyzwalacz właściwości "wykonaniu". "Treść" wyzwalacz właściwości nie jest kodem, znaczników. Że jest ograniczona do przy użyciu co najmniej jednego Setter elementy ustawienie innych właściwości obiektu, w której jest stosowany stylu lub szablonu.

Do przesunięcia "if" warunku wyzwalacza właściwości, który ma wiele różnych możliwych wartości, ogólnie jest zalecane, aby ustawić tę wartość właściwości domyślne przy użyciu Setter. W ten sposób Trigger zawartych w nim metody ustawiającej będzie mają pierwszeństwo, gdy warunek wyzwalacza jest spełniony, a Setter nie jest w Trigger pierwszeństwo ma zawsze, gdy warunek wyzwalacza jest fałszywy.

Wyzwalacze właściwości są zazwyczaj odpowiednie dla scenariuszy, w którym należy zmienić jedną lub więcej właściwości wyglądu, oparte na stanie innej właściwości w tym samym elemencie.

Aby dowiedzieć się więcej na temat właściwości wyzwalaczy, zobacz Tworzenie szablonów i stylów.

Pokaż: