【问题标题】:How to change default mode of x:Bind?如何更改 x:Bind 的默认模式?
【发布时间】:2017-01-17 07:41:30
【问题描述】:

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

有没有办法将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}"/>

【问题讨论】:

    标签: xaml uwp windows-10 xbind


    【解决方案1】:

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

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

    首先,x:Bind 是一个编译绑定。在编译期间,XAML 被转换为强类型代码,这比 {Binding} 使用的运行时对象检查要快。

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

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

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

    有关 x:Bind 的更多信息MSDN

    【讨论】:

    【解决方案2】:

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

    x:DefaultBindMode="OneWay"
    

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

    Here you can read more about it.

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-03-13
        • 2020-05-31
        • 2011-12-05
        • 2021-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-28
        • 2011-10-17
        相关资源
        最近更新 更多