xaml
Różnice w różnych dialektach XAML
Szukaj…
Uwagi
XAML jest używany w aplikacjach Silverlight, Windows Phone, Windows RT i UWP. Udostępnianie kodu lub konwersja kodu między nimi jest czasami trudniejsza niż jest to pożądane ze względu na subtelne różnice między różnymi dialektami XAML. W tym temacie przedstawiono przegląd tych różnic wraz z krótkim wyjaśnieniem.
Skompilowane powiązania danych: rozszerzenie znaczników {x: Bind}
Databings są niezbędne do pracy z XAML. Dialekt XAML dla aplikacji UWP zapewnia rodzaj powiązania: rozszerzenie znaczników {x: Bind}.
Praca z {Binding XXX} i {x: Bind XXX} jest w większości równoważna, z tą różnicą, że rozszerzenie x: Bind działa w czasie kompilacji, co umożliwia lepsze możliwości debugowania (np. Punkty przerwania) i lepszą wydajność.
<object property="{x:Bind bindingPath}" />
Rozszerzenie znaczników x: Bind jest dostępne tylko dla aplikacji UWP. Dowiedz się więcej na ten temat w tym artykule MSDN: https://msdn.microsoft.com/en-us/windows/uwp/data-binding/data-binding-in-depth .
Alternatywy dla Silverlight, WPF, Windows RT: Użyj standardowej składni {Binding XXX}:
<object property="{Binding bindingPath}" />
Importowanie przestrzeni nazw w XAML
Przez większość czasu musisz importować przestrzenie nazw do pliku XAML. Sposób ten jest różny dla różnych wariantów XAML.
W przypadku Windows Phone, Silverlight, WPF użyj składni clr-namespace:
<Window ... xmlns:internal="clr-namespace:rootnamespace.namespace"
xmlns:external="clr-namespace:rootnamespace.namespace;assembly=externalAssembly"
>
Windows RT, UWP używają składni przy użyciu:
<Page ... xmlns:internal="using:rootnamespace.namespace"
xmlns:external="using:rootnamespace.namespace;assembly=externalAssembly"
>
Multi Binding
Multi Binding to funkcja dostępna wyłącznie w programowaniu WPF. Umożliwia powiązanie z wieloma wartościami jednocześnie (zwykle używane z MultiValueConverter).
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="PropertyOne"/>
<Binding Path="PropertyTwo"/>
</MultiBinding>
</TextBox.Text>
</TextBox>
Platformy inne niż WPF nie obsługują wiązania wielu. Musisz znaleźć alternatywne rozwiązania (takie jak przeniesienie kodu z widoku i konwerterów do viewmodel) lub zastosować zachowania stron trzecich, takie jak w tym artykule: http://www.damirscorner.com/blog/posts/20160221-MultibindingInUniversalWindowsApps.html)