xaml
Differenze nei vari dialetti XAML
Ricerca…
Osservazioni
XAML è utilizzato nelle app Silverlight, Windows Phone, Windows RT e UWP. Condividere codice o convertire codice tra questi è talvolta più difficile che desiderabile a causa delle sottili differenze tra i vari dialetti XAML. Questo argomento si sforza di dare una panoramica di queste differenze con una breve spiegazione.
Associazioni di dati compilati: l'estensione di markup {x: Bind}
I databings sono essenziali per lavorare con XAML. Il dialetto XAML per le app UWP fornisce un tipo di collegamento: l'estensione di markup {x: Bind}.
Lavorare con {Binding XXX} e {x: Bind XXX} è per lo più equivalente, con la differenza che l'estensione x: Bind funziona in fase di compilazione, che consente migliori funzionalità di debug (ad esempio punti di interruzione) e prestazioni migliori.
<object property="{x:Bind bindingPath}" />
L'estensione di markup x: Bind è disponibile solo per le app UWP. Scopri di più in questo articolo MSDN: https://msdn.microsoft.com/en-us/windows/uwp/data-binding/data-binding-in-depth .
Alternative per Silverlight, WPF, Windows RT: utilizza la sintassi standard {Binding XXX}:
<object property="{Binding bindingPath}" />
Importazione di spazi dei nomi in XAML
La maggior parte delle volte è necessario importare spazi dei nomi nel file XAML. Come questo è fatto è diverso per le diverse varianti XAML.
Per Windows Phone, Silverlight, WPF utilizzano la sintassi clr-namespace:
<Window ... xmlns:internal="clr-namespace:rootnamespace.namespace"
xmlns:external="clr-namespace:rootnamespace.namespace;assembly=externalAssembly"
>
Windows RT, UWP usa la sintassi usando:
<Page ... xmlns:internal="using:rootnamespace.namespace"
xmlns:external="using:rootnamespace.namespace;assembly=externalAssembly"
>
Legatura multipla
Multi Binding è una funzionalità esclusiva per lo sviluppo di WPF. Permette un legame a più valori contemporaneamente (in genere utilizzato con un MultiValueConverter).
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="PropertyOne"/>
<Binding Path="PropertyTwo"/>
</MultiBinding>
</TextBox.Text>
</TextBox>
Piattaforme diverse da WPF non supportano il binding multiplo. Devi trovare soluzioni alternative (come spostare il codice dalla vista e convertitori al viewmodel) o ricorrere a comportamenti di terze parti come in questo articolo: http://www.damirscorner.com/blog/posts/20160221-MultibindingInUniversalWindowsApps.html)