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=
,
=
.
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 value1Binding
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.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", 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 innymibindProp
=value
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 Binding
bindProp
= w value
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ść lubfalse
. Wartość domyślna tofalse
.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 RelativeSourceSource; 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ść lubfalse
. Wartość domyślna tofalse
.Mode: wartość jest stałą nazwą z BindingMode wyliczenia. Na przykład
{Binding Mode=OneWay}
.NotifyOnSourceUpdated: Wartość logiczna może mieć
true
wartość lubfalse
. Wartość domyślna tofalse
.NotifyOnTargetUpdated: Wartość logiczna może mieć
true
wartość lubfalse
. Wartość domyślna tofalse
.NotifyOnValidationError: Wartość logiczna może mieć
true
wartość lubfalse
. 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 XAML Syntax (Składnia XAML propertyPath).
RelativeSource: wzajemnie wykluczające się wartości i ElementNameSource; 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 RelativeSourceElementName; 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ść lubfalse
. Wartość domyślna tofalse
. Zobacz uwagi.ValidatesOnExceptions: Wartość logiczna może mieć
true
wartość lubfalse
. 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 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.
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ż
.NET Desktop feedback