xaml
Verschillen in de verschillende XAML-dialecten
Zoeken…
Opmerkingen
XAML wordt gebruikt in Silverlight-, Windows Phone-, Windows RT- en UWP-apps. Het delen van code of het omzetten van code hiertussen is soms moeilijker dan wenselijk vanwege subtiele verschillen tussen de verschillende XAML-dialecten. Dit onderwerp streeft ernaar een overzicht van deze verschillen te geven met een korte uitleg.
Gecompileerde gegevensbindingen: de {x: Bind} markup-extensie
Databases zijn essentieel voor het werken met XAML. Het XAML-dialect voor UWP-apps biedt een soort binding: de {x: Bind} markup-extensie.
Het werken met {Binding XXX} en {x: Bind XXX} is meestal equivalent, met het verschil dat de x: Bind-extensie werkt tijdens het compileren, wat betere debugging-mogelijkheden (bijv. Breekpunten) en betere prestaties mogelijk maakt.
<object property="{x:Bind bindingPath}" />
De x: Bind markup-extensie is alleen beschikbaar voor UWP-apps. Meer informatie hierover in dit MSDN-artikel: https://msdn.microsoft.com/en-us/windows/uwp/data-binding/data-binding-in-depth .
Alternatieven voor Silverlight, WPF, Windows RT: Gebruik de standaard {Binding XXX} syntaxis:
<object property="{Binding bindingPath}" />
Naamruimten importeren in XAML
Meestal moet u naamruimten in uw XAML-bestand importeren. Hoe dit wordt gedaan, is verschillend voor de verschillende XAML-varianten.
Voor Windows Phone, Silverlight en WPF gebruikt u de syntaxis van clr-namespace:
<Window ... xmlns:internal="clr-namespace:rootnamespace.namespace"
xmlns:external="clr-namespace:rootnamespace.namespace;assembly=externalAssembly"
>
Windows RT, UWP gebruiken de syntaxis:
<Page ... xmlns:internal="using:rootnamespace.namespace"
xmlns:external="using:rootnamespace.namespace;assembly=externalAssembly"
>
Multi binding
Multi Binding is een functie exclusief voor WPF-ontwikkeling. Het maakt een binding mogelijk met meerdere waarden tegelijk (meestal gebruikt met een MultiValueConverter).
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="PropertyOne"/>
<Binding Path="PropertyTwo"/>
</MultiBinding>
</TextBox.Text>
</TextBox>
Andere platforms dan WPF ondersteunen geen multi-binding. Je moet alternatieve oplossingen vinden (zoals het verplaatsen van de code van view en converters naar het viewmodel) of gebruik gedrag van derden zoals in dit artikel: http://www.damirscorner.com/blog/posts/20160221-MultibindingInUniversalWindowsApps.html)