Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Odracza wartość właściwości, aby była związaną z danymi, tworząc pośredni obiekt wyrażenia i interpretując kontekst danych mający zastosowanie do elementu i jego powiązania podczas działania programu.
Użycie wyrażenia wią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 [] i * nie są literałami. Są częścią notacji wskazującej, że można użyć zero lub więcej par bindProp=value, z separatorem , między nimi i poprzedzającymi parami bindProp=value.
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 rozszerzenia znaczników Binding, jest to tylko ogólne przetwarzanie atrybutów XAML, które ustawiają właściwości klasy CLR Binding. Innemi słowy, <BindingbindProp1="value1"[bindPropN="valueN"]*/> jest równoważną składnią dla atrybutów użycia elementu Binding zamiast użycia wyrażenia Binding. Aby dowiedzieć się więcej o użyciu atrybutu XAML dla określonych właściwości elementu Binding, zobacz sekcję "Użycie atrybutu XAML" odpowiedniej właściwości elementu Binding w bibliotece klas .NET Framework.
Wartości XAML
| Wartość | Opis |
|---|---|
bindProp1, bindPropN |
Nazwa właściwości Binding lub BindingBase do ustawienia. Nie wszystkie Binding właściwości można ustawić za pomocą rozszerzenia Binding, a niektóre właściwości mogą być ustawiane w wyrażeniu 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 |
Ciag ścieżek służący do ustawienia domyślnej właściwości Binding.Path. Zobacz również składnię XAML PropertyPath. |
Niekwalifikowane {binding}
Użycie {Binding}, pokazane w sekcji "Użycie wyrażenia powiązania", tworzy obiekt Binding z domyślnymi wartościami, które zawierają początkową wartość Binding.Pathnull. 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", gdzie Path= nie musi pojawiać się w wyrażeniu. Jeśli określisz wyrażenie Binding z ukrytą ścieżką, ścieżka ukryta musi pojawić się najpierw w wyrażeniu, przed jakimikolwiek innymi parami bindProp=value, w których właściwość Binding jest określona przez nazwę. Na przykład: {Binding PathString}, gdzie PathString jest ciągiem, który jest oceniany na wartość Binding.Path w ramach Binding utworzonego 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 wiązania, które można ustawić przy użyciu rozszerzenia wiązania
Składnia przedstawiona w tym temacie używa ogólnego przybliżenia bindProp=value, ponieważ istnieje wiele właściwości do odczytu/zapisu BindingBase lub Binding, które można skonfigurować za pomocą rozszerzenia znaczników / składni wyrażenia Binding. Można je ustawić w dowolnej kolejności, z wyjątkiem niejawnego Binding.Path elementu. (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 dla każdej właściwości w bibliotece klas .NET Framework; ciąg stosowany w składni atrybutów XAML, zarówno bez, jak i z dalszym użyciem rozszerzenia znaczników, jest zasadniczo taki sam jak wartość określona w wyrażeniu Binding, z wyjątkiem tego, że nie umieszcza się cudzysłowów wokół każdego bindProp=value w wyrażeniu Binding.
BindingGroupName: ciąg identyfikujący możliwą grupę powiązań. Jest to stosunkowo zaawansowana koncepcja powiązania; zobacz stronę referencyjną dotyczącą BindingGroupName.
BindsDirectlyToSource: Wartość logiczna, może być
truealbofalse. Wartość domyślna tofalse.Converter: można ustawić jako
bindProp=valuecią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: ustawialny w wyrażeniu jako identyfikator zgodny ze standardami; zobacz temat referencyjny dotyczący ConverterCulture.
ConverterParameter: można ustawić jako
bindProp=valuecią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ę względem RelativeSource oraz Source; każda z tych właściwości wiążących reprezentuje określoną metodologię wiązania. Zobacz Omówienie powiązań danych.
FallbackValue: można ustawić jako
bindProp=valueciąg w wyrażeniu, ale jest to zależne od typu przekazywanej wartości. W przypadku przekazywania typu referencyjnego, wymagane jest odwołanie do obiektu, takie jak zagnieżdżone rozszerzenie składni StaticResource.IsAsync: Wartość logiczna, może być
truelubfalse. Wartość domyślna tofalse.Mode: wartość jest stałą nazwą z BindingMode wyliczenia. Na przykład
{Binding Mode=OneWay}.NotifyOnSourceUpdated: Wartość logiczna, może być albo
true, albofalse. Wartość domyślna tofalse.NotifyOnTargetUpdated: Wartość logiczna może być
truelubfalse. Wartość domyślna tofalse.NotifyOnValidationError: Wartość logiczna może być
truelubfalse. Wartość domyślna tofalse.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 o składni XAML.
RelativeSource: wzajemnie wykluczające się z ElementName i Source; każda z tych właściwości wiążących reprezentuje określoną metodologię wiązania. Zobacz Omówienie powiązań danych. Wymaga zagnieżdżonego użycia metody RelativeSource MarkupExtension w celu określenia wartości.
Source: wzajemnie wykluczające się względem RelativeSource oraz ElementName; każda z tych właściwości wiążących reprezentuje określoną metodologię wiązania. Zobacz Omówienie powiązań danych. Wymaga użycia zagnieżdżonego rozszerzenia, zazwyczaj Markup Extension StaticResource, które odwołuje się do źródła danych obiektu ze słownika zasobów z przypisanym kluczem.
StringFormat: ciąg opisujący konwencję formatu ciągu dla powiązanych danych. Jest to stosunkowo zaawansowana koncepcja powiązania; zobacz stronę referencyjną dotyczącą StringFormat.
TargetNullValue: można ustawić jako
bindProp=valuecią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 być
truelubfalse. Wartość domyślna tofalse. Zobacz uwagi.ValidatesOnExceptions: Wartość logiczna może być
truelubfalse. Wartość domyślna tofalse. 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 rozszerzenia znacznika lub formy wyrażenia Binding/{Binding}.
UpdateSourceExceptionFilter: ta właściwość oczekuje odwołania do implementacji wywołania zwrotnego. Możliwość odwoływania się w składni XAML do innych wywołań zwrotnych/metod niż obsługujących zdarzenia jest niemożliwa.
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.
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 wcześniej miała wyrażenie Binding, wyrażenie Binding zostanie całkowicie usunięte. Aby uzyskać szczegółowe informacje, zobacz hierarchia 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ązań danych.
Uwaga / Notatka
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ą niezależne od 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 Implementację walidacji powiązań.
Binding jest rozszerzeniem znacznikowym. Rozszerzenia znaczników są zazwyczaj implementowane, gdy istnieje potrzeba zmiany wartości atrybutów, które mają być inne niż wartości dosłowne lub nazwy 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ą { i } w składni atrybutów, co jest konwencją, za pomocą której procesor XAML rozpoznaje, że rozszerzenie znaczników musi przetwarzać zawartość tekstu. Aby uzyskać więcej informacji, zobacz sekcje Rozszerzenia znaczników iWPF XAML.
Binding to nietypowe rozszerzenie znaczników, ponieważ klasa Binding, 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 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 także
.NET Desktop feedback