uwp
Binding vs x: Bind
Szukaj…
Składnia
<object property = "{x: Bind}" ... />
<object property = "{x: Bind propertyPath}" ... />
<object property = "{x: Bind Path = propertyPath}" ... />
<object property = "{x: Bind [bindingProperties]}" ... />
<object property = "{x: Bind propertyPath, [bindingProperties]}" ... />
<object property = "{x: Bind Path = propertyPath, [bindingProperties]}" ... />
Uwagi
Rozszerzenie znaczników {x:Bind}
- nowe w systemie Windows 10 - jest alternatywą dla {Binding}
.
{x:Bind}
nie ma niektórych funkcji {Binding}
, ale działa krócej i zajmuje mniej pamięci niż {Binding}
i obsługuje lepsze debugowanie.
W czasie ładowania XAML {x:Bind}
jest konwertowany na coś, co można traktować jako obiekt wiążący, a ten obiekt otrzymuje wartość z właściwości w źródle danych. Obiekt powiązania można opcjonalnie skonfigurować w taki sposób, aby obserwował zmiany wartości właściwości źródła danych i odświeżał się na podstawie tych zmian. Opcjonalnie można go również skonfigurować do przekazywania zmian własnej wartości z powrotem do właściwości source. Obiekty wiązania utworzone przez {x:Bind}
i {Binding}
są w dużej mierze funkcjonalnie równoważne. Ale {x:Bind}
wykonuje kod specjalnego przeznaczenia, który generuje w czasie kompilacji, a {Binding}
korzysta z ogólnego obiektu kontroli środowiska wykonawczego. W związku z tym powiązania {x:Bind}
(często nazywane powiązaniami skompilowanymi) mają doskonałą wydajność, zapewniają sprawdzanie poprawności wyrażeń powiązań w czasie kompilacji i wspierają debugowanie, umożliwiając ustawianie punktów przerwania w plikach kodu generowanych jako częściowe klasa dla twojej strony. Pliki te można znaleźć w folderze obj, o nazwach takich jak (dla C #) .g.cs.
Aby uzyskać więcej informacji, zobacz dokumentację MSDN na temat x: Bind
Ocena {x: Bind} na podstawie funkcji
Ta umiejętność została dodana do rozszerzenia znaczników Bind po wersji v1607 (Redstone 1).
Możesz określić ścieżkę funkcji, a także ścieżki arg i stałe argumenty. Załóżmy, że mamy funkcję zdefiniowaną w naszym kodzie zwrotnym:
public string Translate(string text, string from, string to)
Teraz możemy użyć bind do oceny funkcji w pożądanym elemencie:
<TextBlock Name="SomeText" Text="How are you?" />
<TextBlock Name="{x:Bind Translate(SomeText.Text, 'en', 'es')}" />
Ścieżki funkcji i arg mogą również zawierać kropki i rzutowania.