xaml
Различия в различных диалектах XAML
Поиск…
замечания
XAML используется в приложениях Silverlight, Windows Phone, Windows RT и UWP. Обмен кодом или преобразование кода между ними иногда сложнее, чем желательно из-за тонких различий между различными диалектами XAML. Эта тема стремится дать краткий обзор этих различий с кратким объяснением.
Скомпилированные привязки данных: расширение разметки {x: Bind}
Базы данных необходимы для работы с XAML. Диалог XAML для приложений UWP предоставляет тип привязки: расширение разметки {x: Bind}.
Работа с {Binding XXX} и {x: Bind XXX} в основном эквивалентна, с той разницей, что расширение x: Bind работает во время компиляции, что обеспечивает лучшие возможности отладки (например, точки разрыва) и лучшую производительность.
<object property="{x:Bind bindingPath}" />
Расширение разметки x: Bind доступно только для приложений UWP. Подробнее об этом читайте в этой статье MSDN: https://msdn.microsoft.com/en-us/windows/uwp/data-binding/data-binding-in-depth .
Альтернативы для Silverlight, WPF, Windows RT: используйте стандартный синтаксис {Binding XXX}:
<object property="{Binding bindingPath}" />
Импорт пространств имен в XAML
В большинстве случаев вам нужно импортировать пространства имен в файл XAML. Как это делается, разные для разных вариантов XAML.
Для Windows Phone Silverlight WPF использует синтаксис пространства имен clr:
<Window ... xmlns:internal="clr-namespace:rootnamespace.namespace"
xmlns:external="clr-namespace:rootnamespace.namespace;assembly=externalAssembly"
>
Windows RT, UWP используют синтаксис использования:
<Page ... xmlns:internal="using:rootnamespace.namespace"
xmlns:external="using:rootnamespace.namespace;assembly=externalAssembly"
>
Мультисвязывание
Multi Binding - это эксклюзивная функция для разработки WPF. Он позволяет связывать сразу несколько значений (обычно используется с MultiValueConverter).
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="PropertyOne"/>
<Binding Path="PropertyTwo"/>
</MultiBinding>
</TextBox.Text>
</TextBox>
Платформы, отличные от WPF, не поддерживают множественную привязку. Вы должны найти альтернативные решения (например, перемещение кода из представления и конвертеров в режим просмотра) или использовать сторонние действия, как в этой статье: http://www.damirscorner.com/blog/posts/20160221-MultibindingInUniversalWindowsApps.html)