是否很好地概述了各种XAML方言之间的差异

ste*_*n.s 12 silverlight wpf xaml win-universal-app uwp-xaml

在开发通用Windows应用程序(uwp)时,我经常需要查找如何在XAML中执行不同的操作.

一个问题是,我经常会得到一个不适用于UWP应用程序的WPF或Silverlight或Windows Phone解决方案.各种方言之间是否存在差异?

如果没有,这可能是即将发布的stackoverflow文档功能的一部分.我非常愿意参与我已经意识到的事情.

ste*_*n.s 5

编译的数据绑定:{x:Bind}标记扩展

数据bing对于使用XAML是必不可少的。用于UWP应用程序的XAML语言提供了一种绑定类型:{x:Bind}标记扩展。

使用{Binding XXX}和{x:Bind XXX}基本上是等效的,不同之处在于x:Bind扩展名在编译时起作用,从而实现了更好的调试功能(例如断点)和更好的性能。

<object property="{x:Bind bindingPath}" />
Run Code Online (Sandbox Code Playgroud)

x:Bind标记扩展名仅适用于UWP应用。在此MSDN文章中了解有关此内容的更多信息:https : //msdn.microsoft.com/zh-cn/windows/uwp/data-binding/data-binding-in-depth

Silverlight,WPF,Windows RT的替代方法:使用标准的{Binding XXX}语法:

<object property="{Binding bindingPath}" />
Run Code Online (Sandbox Code Playgroud)

在XAML中导入名称空间

大多数时候,您需要在XAML文件中导入名称空间。对于不同的XAML变体,此操作的完成方式有所不同。

对于Windows Phone,Silverlight,WPF,请使用clr-namespace语法:

<Window ... xmlns:internal="clr-namespace:rootnamespace.namespace"
            xmlns:external="clr-namespace:rootnamespace.namespace;assembly=externalAssembly"
>
Run Code Online (Sandbox Code Playgroud)

Windows RT,UWP使用using语法:

<Page ... xmlns:internal="using:rootnamespace.namespace"
          xmlns:external="using:rootnamespace.namespace;assembly=externalAssembly"
>
Run Code Online (Sandbox Code Playgroud)

多重装订

多重绑定是WPF开发所独有的功能。它允许一次绑定到多个值(通常与MultiValueConverter一起使用)。

<TextBox>
    <TextBox.Text>
        <MultiBinding Converter="{StaticResource MyConverter}">
            <Binding Path="PropertyOne"/>
            <Binding Path="PropertyTwo"/>
        </MultiBinding>
    </TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)

WPF以外的平台均不支持多重绑定。您必须找到替代解决方案(例如将代码从视图和转换器移动到视图模型)或像本文中那样重用第三方行为:http : //www.damirscorner.com/blog/posts/20160221-MultibindingInUniversalWindowsApps.html


Has*_*nov 0

你好,不久前,当我开始为 UWP 写作时,我发现一篇文章对我确实有帮助。看看这里另外,StackOverflow中已经有一个关于此问题的问题了