4

我不知道他们为什么决定为 to 设置默认值Mode但这OneTime不是我大多数时候想要的。它浪费了我一整天的调试时间。

有没有办法将值设置为of 的OneWay默认值?Modex:Bind

<!--This will not listen to future changes. it is OneTime by default-->
<TextBlock Text="{x:Bind Name}"/>

<!--We have to explicitly define Mode value-->
<TextBlock Text="{x:Bind Name, Mode=OneWay}"/>
4

3 回答 3

6

TL:DR: 不,无法更改内置控件的绑定模式。

x:Bind连同其他一些标记扩展x:Phase,都被添加以提高性能。请记住,UWP 应用程序可以在桌面上运行,也可以在最小的 IoT 设备上运行,因此性能是关键。

首先,x:Bind是一个编译绑定。在编译期间,XAML 被转换为强类型代码,这比{Binding}.

OneTime其次,它本身使用绑定针对性能进行了优化。OneWay绑定需要基础设施来监视和TwoWay推回更改。

可以选择将绑定对象配置为观察数据源属性值的变化并根据这些变化刷新自身。它还可以选择配置为将其自身值的更改推送回源属性。

过去一切都OneWay{Binding},这意味着每个领域的性能都会受到很小的影响,即使是那些只需要绑定一次的领域(因为OneTime如果它可以正常工作,你为什么还要费心去改变它)。现在你不得不考虑哪些字段应该是可更新的,从而使用更多的资源。

有关 x:Bind 在MSDN上的更多信息。

于 2017-01-17T08:11:13.503 回答
3

从 Windows 10 版本 1607(周年更新)开始,SDK 版本 14393 可以设置

x:DefaultBindMode="OneWay"

Mode在任何父 xaml 元素上,并且该节点的未显式设置属性的子节点的默认值将持续存在。

在这里你可以阅读更多关于它的信息。

于 2018-10-24T10:49:51.080 回答
0

我认为这是设计使然。如果您想使用 OneWay 作为默认值。你可以使用绑定

目前,Binding 应该比X:Bind更强。

{x:Bind} 标记扩展(Windows 10 的新功能)是 {Binding} 的替代品。{x:Bind} 缺少 {Binding} 的一些功能,但它比 {Binding} 运行时间和内存更少,并且支持更好的调试。

于 2017-01-17T08:06:43.290 回答