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)



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow