Udostępnij za pośrednictwem


Rozszerzenie znaczników powiązania

Odchyli wartość właściwości jako wartość związaną 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 wykonywania.

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 wskazującej, że można użyć par wartości bindProp lub zero, z separatorem , między nimi i poprzedzającymi pary wartości bindProp==.

Zamiast tego można ustawić dowolne właściwości wymienione w sekcji "Właściwości powiązania, które można ustawić za pomocą rozszerzenia powiązania" przy użyciu atrybutów Binding elementu obiektu. Jednak nie jest to naprawdę użycie Bindingrozszerzenia znaczników , jest to tylko ogólne przetwarzanie XAML atrybutów, które ustawiają właściwości klasy CLR Binding . Innymi słowy, <Binding bindProp1 value1"[=" bindPropN valueN=""]*/> jest równoważną składnią atrybutów Binding 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 Bindingprogramu , zobacz sekcję "Użycie atrybutów XAML" odpowiedniej właściwości Binding w bibliotece klas programu .NET Framework.

Wartości XAML

Wartość Opis
bindProp1, bindPropN Nazwa Binding właściwości lub BindingBase do ustawienia. Nie wszystkie Binding właściwości można ustawić za pomocą rozszerzenia, a niektóre właściwości są ustawiane w wyrażeniu Binding Binding tylko przy użyciu dodatkowych 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 ustawianej określonej Binding właściwości.
path Ciąg ścieżki, który ustawia niejawną Binding.Path właściwość. Zobacz również składnię XAML propertyPath.

Niekwalifikowane {binding}

Użycie {Binding} pokazane w sekcji "Użycie wyrażenia powiązania" tworzy Binding obiekt z wartościami domyślnymi, który zawiera początkowy element Binding.Path null. Jest to nadal przydatne w wielu scenariuszach, ponieważ utworzone Binding może polegać na kluczowych właściwościach powiązania danych, takich jak Binding.Path i Binding.Source ustawianych w kontekście danych czasu wykonywania. Aby uzyskać więcej informacji na temat pojęcia kontekstu danych, zobacz Powiązanie danych.

Ścieżka niejawna

Rozszerzenie Binding znaczników używa Binding.Path jako koncepcyjnej "właściwości domyślnej", w której Path= nie trzeba pojawiać się w wyrażeniu. Jeśli określisz Binding wyrażenie z niejawną ścieżką, ścieżka niejawna musi pojawić się najpierw w wyrażeniu, przed innymivalue bindProp=parami, w których Binding właściwość jest określona przez nazwę. Na przykład: {Binding PathString}, gdzie PathString jest ciągiem, który jest oceniany jako wartość Binding.Path w wartości utworzonej Binding przez użycie rozszerzenia znaczników. Możesz dołączyć niejawną ścieżkę z innymi nazwanymi właściwościami po separatorze przecinka, 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 przedstawiona w tym temacie używa ogólnego bindProp=value przybliżenia, ponieważ istnieje wiele właściwości BindingBase odczytu/zapisu lub Binding , które można ustawić za pomocą Binding rozszerzenia znaczników /składni wyrażenia. Można je ustawić w dowolnej kolejności, z wyjątkiem niejawnego Binding.Pathelementu . (Istnieje możliwość jawnego określenia Path=parametru , w którym przypadku można go ustawić w dowolnej kolejności). Zasadniczo można ustawić zero lub więcej właściwości na poniższej liście, używając bindProp=value par rozdzielonych przecinkami.

Kilka z tych wartości właściwości wymaga typów obiektów, które nie obsługują natywnej konwersji typu ze składni tekstowej w języku XAML, a tym samym wymagają rozszerzeń znaczników w celu ustawienia jako wartości atrybutu. Aby uzyskać więcej informacji, zapoznaj się z sekcją Użycie atrybutów XAML w bibliotece klas programu .NET Framework dla każdej właściwości; ciąg używany dla składni atrybutów XAML z lub bez dalszego użycia rozszerzenia znaczników jest zasadniczo taki sam jak wartość określona w wyrażeniu, z wyjątkiem, że nie umieszczasz cudzysłowów wokół każdego bindProp=value w Binding wyrażeniu.Binding

  • BindingGroupName: ciąg identyfikujący możliwą grupę powiązań. Jest to stosunkowo zaawansowana koncepcja powiązania; zobacz stronę referencyjną dla BindingGroupNameelementu .

  • BindsDirectlyToSource: Wartość logiczna może mieć true wartość lub false. Wartość domyślna to false.

  • Converter: można ustawić jako bindProp=value ciąg w wyrażeniu, ale w tym celu wymaga odwołania do obiektu dla wartości, na przykład staticResource Markup Extension. Wartość w tym przypadku jest wystąpieniem niestandardowej klasy konwertera.

  • ConverterCulture: settable w wyrażeniu jako identyfikator oparty na standardach; zobacz temat referencyjny dla elementu ConverterCulture.

  • ConverterParameter: można ustawić jako bindProp=value ciąg w wyrażeniu, ale jest to zależne od typu przekazywanego parametru. W przypadku przekazywania typu odwołania dla wartości to użycie wymaga odwołania do obiektu, takiego jak zagnieżdżone rozszerzenie znaczników StaticResource.

  • ElementName: wzajemnie wykluczające się wartości i RelativeSource Source; każda z tych właściwości powiązania reprezentuje określoną metodologię powiązań. Zobacz Omówienie powiązania danych.

  • FallbackValue: można ustawić jako bindProp=value ciąg w wyrażeniu, ale jest to zależne od typu przekazywanej wartości. W przypadku przekazywania typu odwołania wymaga odwołania do obiektu, takiego jak zagnieżdżone rozszerzenie znaczników StaticResource.

  • IsAsync: Wartość logiczna może mieć true wartość lub false. Wartość domyślna to false.

  • Mode: wartość jest stałą nazwą z BindingMode wyliczenia. Na przykład {Binding Mode=OneWay}.

  • NotifyOnSourceUpdated: Wartość logiczna może mieć true wartość lub false. Wartość domyślna to false.

  • NotifyOnTargetUpdated: Wartość logiczna może mieć true wartość lub false. Wartość domyślna to false.

  • NotifyOnValidationError: Wartość logiczna może mieć true wartość lub false. Wartość domyślna to false.

  • Path: ciąg opisujący ścieżkę do obiektu danych lub ogólnego modelu obiektów. Format zawiera kilka różnych konwencji przechodzenia przez model obiektów, którego nie można odpowiednio opisać w tym temacie. Zobacz PropertyPath XAML Syntax (Składnia XAML propertyPath).

  • RelativeSource: wzajemnie wykluczające się wartości i ElementName Source; każda z tych właściwości powiązania reprezentuje określoną metodologię powiązań. Zobacz Omówienie powiązania danych. Wymaga zagnieżdżonego użycia metody RelativeSource MarkupExtension w celu określenia wartości.

  • Source: wzajemnie wykluczające się wartości i RelativeSource ElementName; każda z tych właściwości powiązania reprezentuje określoną metodologię powiązań. Zobacz Omówienie powiązania danych. Wymaga użycia zagnieżdżonego rozszerzenia, zazwyczaj rozszerzenia staticResource Markup , które odwołuje się do źródła danych obiektu ze słownika zasobów kluczy.

  • StringFormat: ciąg opisujący konwencję formatu ciągu dla powiązanych danych. Jest to stosunkowo zaawansowana koncepcja powiązania; zobacz stronę referencyjną dla StringFormatelementu .

  • TargetNullValue: można ustawić jako bindProp=value ciąg w wyrażeniu, ale jest to zależne od typu przekazywanego parametru. W przypadku przekazywania typu odwołania dla wartości wymaga odwołania do obiektu, takiego jak zagnieżdżone rozszerzenie znaczników StaticResource.

  • UpdateSourceTrigger: wartość jest stałą nazwą z UpdateSourceTrigger wyliczenia. Na przykład {Binding UpdateSourceTrigger=LostFocus}. Określone kontrolki mogą mieć różne wartości domyślne dla tej właściwości powiązania. Zobacz: UpdateSourceTrigger.

  • ValidatesOnDataErrors: Wartość logiczna może mieć true wartość lub false. Wartość domyślna to false. Zobacz uwagi.

  • ValidatesOnExceptions: Wartość logiczna może mieć true wartość lub false. Wartość domyślna to false. Zobacz uwagi.

  • XPath: ciąg opisujący ścieżkę do xmlDOM źródła danych XML. Zobacz Tworzenie powiązania z danymi XML przy użyciu elementu XMLDataProvider i zapytań XPath.

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

  • 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ż programy obsługi zdarzeń w składni XAML.

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

  • XmlNamespaceManager

Uwagi

Ważne

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

Opisywanie powiązania danych na poziomie podstawowym nie zostało omówione w tym temacie. Zobacz Omówienie powiązania danych.

Uwaga

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

Wartości logiczne języka XAML są bez uwzględniania wielkości liter. Można na przykład określić wartość {Binding NotifyOnValidationError=true} lub {Binding NotifyOnValidationError=True}.

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

Binding to rozszerzenie znaczników. Rozszerzenia znaczników są zwykle implementowane, gdy istnieje wymóg ucieczki wartości atrybutów, które mają być inne niż wartości literału lub nazwy procedur obsługi, a wymaganie jest bardziej globalne niż konwertery typów przypisane dla niektórych typów lub właściwości. Wszystkie rozszerzenia znaczników w języku XAML używają { znaków i } w ich składni atrybutu, która jest konwencją, za pomocą której 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 to nietypowe rozszerzenie znaczników w tej Binding klasie, które 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 XAML. Pozostałe elementy członkowskie mają na celu uczynienie Binding bardziej uniwersalnej i samodzielnej klasy, która może sprostać wielu scenariuszom powiązania danych oprócz funkcjonowania jako rozszerzenia znaczników XAML.

Zobacz też