Rozszerzenie znaczników powiązania

Różni wartość właściwości od wartości powiązanej z danymi, tworząc obiekt wyrażenia pośredniego i interpretując kontekst danych, który ma zastosowanie do elementu i jego powiązania w czasie działania.

Użycie wyrażenia powiązania

<object property="{Binding}" .../>  
-or-  
<object property="{Binding  bindProp1=value1[, bindPropN=valueN]*}" ...  
/>  
-or-  
<object property="{Binding path}" .../>  
-or  
<object property="{Binding path[, bindPropN=valueN]*}" .../>  

Uwagi dotyczące składni

W tych składniach [] literały i * nie są literałami. Są one częścią notacji, aby wskazać, że można użyć zero lub więcej par wartości bindProp, z separatorem między nimi i poprzedzającymi parami wartości = , bindProp. =

Wszystkie właściwości wymienione w sekcji "Właściwości powiązania, które można ustawić za pomocą rozszerzenia powiązania", można zamiast tego ustawić przy użyciu atrybutów Binding elementu obiektu. Jednak nie jest to w pełni użycie rozszerzenia znaczników , jest to po prostu ogólne przetwarzanie XAML atrybutów, które Binding ustawiają właściwości klasy Binding CLR. Innymi słowy wartość <Binding bindProp1 =" "[ bindPropN =" valueN "]*/> Binding jest równoważną składnią atrybutów użycia elementu obiektu zamiast Binding użycia wyrażenia. Aby dowiedzieć się więcej o użyciu atrybutów XAML określonych właściwości obiektu , zobacz sekcję "Użycie atrybutu XAML" odpowiedniej właściwości obiektu w .NET Framework Binding Binding Class Library.

Wartości XAML

bindProp1, bindPropN Nazwa właściwości Binding lub BindingBase do ustawienia. Nie wszystkie właściwości można ustawić za pomocą rozszerzenia, a niektóre właściwości można ustawić w wyrażeniu tylko przy użyciu Binding Binding dalszych Binding zagnieżdżonych rozszerzeń znaczników. Zobacz sekcję "Właściwości powiązania, które można ustawić za pomocą rozszerzenia powiązania".
value1, valueN Wartość, na która ma być ustawiona właściwość. Obsługa wartości atrybutu jest ostatecznie specyficzna dla typu i logiki określonej Binding ustawianej właściwości.
path Ciąg ścieżki, który ustawia niejawną Binding.Path właściwość. Zobacz też składnię XAML PropertyPath.

Niekwalifikowane {Binding}

Użycie {Binding} pokazane w części "Użycie wyrażenia powiązania" tworzy obiekt z wartościami domyślnymi, w tym Binding Binding.Path początkowym elementem null . Jest to nadal przydatne w wielu scenariuszach, ponieważ utworzony element może polegać na kluczowych właściwościach powiązania danych, takich jak i ustawianych w kontekście danych Binding Binding.Path w czasie Binding.Source działania. Aby uzyskać więcej informacji na temat koncepcji kontekstu danych, zobacz Powiązanie danych.

Ścieżka niejawna

Rozszerzenie Binding znaczników używa jako Binding.Path koncepcyjnej "właściwości domyślnej", Path= gdzie nie musi występować w wyrażeniu. Jeśli określisz wyrażenie z niejawną ścieżką, niejawna ścieżka musi pojawić się jako pierwsza w wyrażeniu, przed innymi parami, w których właściwość jest Binding bindProp = value Binding określona przez nazwę. Na przykład: , gdzie to ciąg, który jest oceniany jako wartość w pliku utworzonym {Binding PathString} PathString przez użycie rozszerzenia Binding.Path Binding znaczników. Po separatorze przecinka można dołączyć ścieżkę niejawną z innymi nazwanymi właściwościami, na przykład {Binding LastName, Mode=TwoWay} .

Właściwości powiązania, które można ustawić za pomocą rozszerzenia powiązania

Składnia pokazana w tym temacie używa ogólnego przybliżenia, ponieważ istnieje wiele właściwości odczytu/zapisu lub , które można ustawić za pomocą składni rozszerzenia bindProp = value BindingBase Binding Binding znaczników/wyrażenia. Można je ustawić w dowolnej kolejności, z wyjątkiem niejawnego Binding.Path . (Dostępna jest opcja jawnego określenia wartości . W takim przypadku Path= można ją ustawić w dowolnej kolejności). Zasadniczo można ustawić zero lub więcej właściwości na poniższej liście przy użyciu par bindProp = value rozdzielonych przecinkami.

Niektóre z tych wartości właściwości wymagają typów obiektów, które nie obsługują konwersji typu natywnego ze składni tekstowej w języku XAML i w związku z tym wymagają rozszerzeń znaczników, aby można je było ustawić jako wartość atrybutu. Aby uzyskać więcej informacji, zapoznaj się z sekcją Użycie atrybutów XAML w .NET Framework Class Library dla każdej właściwości; Ciąg używany dla składni atrybutu XAML z użyciem rozszerzenia znaczników lub bez niego jest zasadniczo taki sam jak wartość określana w wyrażeniu, z wyjątkiem, że nie umieszcza się znaków cudzysłowu wokół każdego z nich w Binding bindProp = value Binding wyrażeniu.

Poniżej przedstawiono właściwości obiektu , których nie można ustawić przy użyciu formularza rozszerzenia Binding Binding {Binding} znaczników/wyrażenia.

  • UpdateSourceExceptionFilter: ta właściwość oczekuje odwołania do implementacji wywołania zwrotnego. Nie można odwoływać się do wywołań zwrotnych/metod innych niż procedury obsługi zdarzeń w składni XAML.

  • ValidationRules: właściwość przyjmuje ogólną kolekcję ValidationRule obiektów . Może to być wyrażone jako element właściwości w elemencie obiektu, ale nie ma łatwo dostępnej techniki analizowania atrybutów do użycia Binding w Binding wyrażeniu. Zobacz temat referencyjny dla ValidationRules .

  • XmlNamespaceManager

Uwagi

Ważne

Jeśli chodzi o pierwszeństwo właściwości zależności, wyrażenie Binding jest równoważne wartości ustawionej lokalnie. Jeśli ustawisz wartość lokalną dla właściwości, która wcześniej zawierała Binding wyrażenie, obiekt Binding zostanie całkowicie usunięty. Aby uzyskać szczegółowe informacje, zobacz Dependency Property Value Precedence(Pierwszeństwo wartości właściwości zależności).

Opisywanie powiązania danych na poziomie podstawowym nie jest uwzględnione w tym temacie. Zobacz Omówienie powiązań danych.

Uwaga

MultiBinding i PriorityBinding nie obsługują składni XAML rozszerzenia. Zamiast tego należy użyć elementów właściwości. Zobacz tematy referencyjne dotyczące MultiBinding i PriorityBinding .

W wartościach logicznych języka XAML nie jest uwzględniania ich liter. Można na przykład określić wartość {Binding NotifyOnValidationError=true} lub {Binding NotifyOnValidationError=True} .

Powiązania, które obejmują walidację danych, są zwykle określane przez jawny element, a nie jako wyrażenie, a ustawienie lub w Binding {Binding ...} ValidatesOnDataErrors ValidatesOnExceptions wyrażeniu jest nietypowe. Wynika to z tego, że właściwości towarzyszącej nie można łatwo ValidationRules ustawić w formularzu wyrażenia. Aby uzyskać więcej informacji, zobacz Implementowanie walidacji powiązań.

Binding jest rozszerzeniem znaczników. Rozszerzenia znaczników są zwykle implementowane, gdy istnieje wymóg ucieczki wartości atrybutów innych niż wartości literałów lub nazw programów obsługi, a wymaganie jest bardziej globalne niż konwertery typów przypisane do niektórych typów lub właściwości. Wszystkie rozszerzenia znaczników w języku XAML używają znaków i w składni atrybutów, czyli konwencji, zgodnie z którą procesor XAML rozpoznaje, że rozszerzenie znaczników musi przetwarzać { } zawartość ciągu. Aby uzyskać więcej informacji, zobacz Rozszerzenia znaczników i WPF XAML.

Binding jest nietypowym rozszerzeniem znaczników w tym, że klasa, która implementuje funkcjonalność rozszerzenia dla implementacji XAML WPF, implementuje również kilka innych metod i właściwości, które nie są powiązane z Binding XAML. Pozostałe składowe mają być bardziej uniwersalną i samodzielną klasą, która może zająć się wieloma scenariuszami powiązania danych, a nie tylko działać jako rozszerzenie Binding znaczników XAML.

Zobacz też