【问题标题】:MVVMCross default binding mode used in a project项目中使用的 MVVMCross 默认绑定模式
【发布时间】:2017-06-05 18:08:34
【问题描述】:

我从另一个开发人员那里继承了一个 Xamarin MVVMCross 项目。我想知道如何获得使用的默认绑定模式以及如何更改它。

【问题讨论】:

    标签: xamarin binding mvvmcross


    【解决方案1】:

    在 MvvmCross 中,使用 MvvmCross 定义的绑定(虚拟属性绑定/自定义绑定)时,默认的 binding mode 通常是 Two-Way。原生属性通常为 One-Way,因为默认情况下没有返回机制(View to ViewModel)。

    来自MvvmCross Custom binding的笔记:

    MvvmCross 已经创建了新的绑定,那么这个 [双向绑定] 通常是 MvvmCross 尝试使用的默认绑定模式。

    Windows 和 Xaml 除外:

    在 Windows/Xaml 中,这种 [单向绑定] 通常是默认绑定模式 - 所以它 是未选择其他模式时使用的模式。

    Swiss binding syntax

    , Mode=$WhichMode$
    

    $WhichMode$ 是其中之一:

    • 单程
    • 单程
    • 到源
    • 双向
    • 一次性
    • 默认

    使用 Android AXML 的示例

    local:MvxBind="Text UserName, Mode=OneWay"
    

    Fluent binding syntax

    使用代码库绑定,您可以使用:

    OneWay()
    TwoWay()
    OneWayToSource()
    OneTime()
    

    例子:

    var set = this.CreateBindingSet<MyView, MyViewModel>();
    set.Bind(cardLabel)
        .For(v => v.Text)
        .To(vm => vm.UserName)
        .OneWay();
    set.Apply();
    

    【讨论】:

    • 是否有一种方法可以一次性设置默认模式?我会避免更改每个 xml 布局文件中的所有绑定
    • 否,由于属性类型的原因,作为默认绑定各种模式,即原生属性默认不能向视图模型发送更改事件,但 MvvmCross 自定义绑定可以进行双向绑定。因此,在本机属性上设置为 TwoWay 的简短设置模式不会使其成为 Two-Way 绑定,必须使用自定义绑定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2019-12-04
    相关资源
    最近更新 更多