xaml
Unterschiede in den verschiedenen XAML-Dialekten
Suche…
Bemerkungen
XAML wird in Silverlight-, Windows Phone-, Windows RT- und UWP-Apps verwendet. Das Teilen von Code oder das Konvertieren von Code zwischen diesen ist aufgrund schwacher Unterschiede zwischen den verschiedenen XAML-Dialekten manchmal schwieriger als wünschenswert. Dieses Thema soll mit einer kurzen Erläuterung einen Überblick über diese Unterschiede geben.
Kompilierte Datenbindungen: Die Markup-Erweiterung {x: Bind}
Datenbestände sind für die Arbeit mit XAML unerlässlich. Der XAML-Dialekt für UWP-Apps bietet einen Bindungstyp: die Markup-Erweiterung {x: Bind}.
Das Arbeiten mit {Binding XXX} und {x: Bind XXX} ist größtenteils gleichwertig, mit dem Unterschied, dass die x: Bind-Erweiterung zur Kompilierzeit funktioniert, was bessere Debugging-Funktionen (z. B. Haltepunkte) und eine bessere Leistung ermöglicht.
<object property="{x:Bind bindingPath}" />
Die Markierungserweiterung x: Bind ist nur für UWP-Apps verfügbar. Weitere Informationen hierzu finden Sie in diesem MSDN-Artikel: https://msdn.microsoft.com/en-us/windows/uwp/data-binding/data-binding-in-depth .
Alternativen für Silverlight, WPF, Windows RT: Verwenden Sie die Standardsyntax {Binding XXX}:
<object property="{Binding bindingPath}" />
Namespaces in XAML importieren
Meistens müssen Sie Namespaces in Ihre XAML-Datei importieren. Wie dies geschieht, unterscheidet sich für die verschiedenen XAML-Varianten.
Für Windows Phone, Silverlight und WPF verwenden Sie die Clr-Namespace-Syntax:
<Window ... xmlns:internal="clr-namespace:rootnamespace.namespace"
xmlns:external="clr-namespace:rootnamespace.namespace;assembly=externalAssembly"
>
Windows RT, UWP verwenden die Verwendung der Syntax:
<Page ... xmlns:internal="using:rootnamespace.namespace"
xmlns:external="using:rootnamespace.namespace;assembly=externalAssembly"
>
Multi-Bindung
Multi Binding ist ein exklusives Feature für die WPF-Entwicklung. Es ermöglicht das Binden an mehrere Werte gleichzeitig (wird normalerweise mit einem MultiValueConverter verwendet).
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="PropertyOne"/>
<Binding Path="PropertyTwo"/>
</MultiBinding>
</TextBox.Text>
</TextBox>
Andere Plattformen als WPF unterstützen keine Mehrfachbindung. Sie müssen alternative Lösungen finden (z. B. Verschieben des Codes aus View und Konvertern in das Viewmodel) oder Verhalten von Drittanbietern wie in diesem Artikel: http://www.damirscorner.com/blog/posts/20160221-MultibindingInUniversalWindowsApps.html).