2

我有一个使用 XCode(它是 XIB)创建的简单视图。它由两个 UITextView 控件和一个 UIButton 组成。我已将 UITextView 控件公开为 Outlets 并为其命名。我的 View.designer.cs 文件中的一切看起来都不错。

我正在使用以下语法创建绑定:

        this.AddBindings(
            new Dictionary<object, string>()
            {
                {lastname, "{'Text':{'Path':'LastName','Mode':'TwoWay'}}"},
                {uservin, "{'Text':{'Path':'CarVIN','Mode':'TwoWay'}}"}

            });

当我从姓氏 UITextView 移动到 uservin UITextView 时,我希望我的视图模型中的 SETTER 被调用,但它没有。当我单击按钮并检查 ViewModel 上两个文本属性的值时,它们都为空。

有人知道我做错了什么吗?我在周二有一个快速演示,所有其他平台都运行良好,但似乎无法解决这个问题。

干杯,

/j

4

1 回答 1

3

我认为问题在于您正在使用UITextView实例...但是 mvvmcross vnext 仅附带UITextField元素的 2 向绑定。

要将UITextView2-way 绑定添加到较旧的 mvvmcross 版本:

  1. 添加一个自定义目标绑定类 - 有点像 v3 中的这个:https ://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Binding.Touch/Target/MvxUITextViewTextTargetBinding.cs

  2. 在 Setup.cs 期间使用如下代码注册它:

    protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
    {
        base.FillTargetFactories(registry);
    
        registry.RegisterFactory(new MvxSimplePropertyInfoTargetBindingFactory(typeof(MvxUITextViewTextTargetBinding), typeof(UITextView), "Text");
    }
    

或者(但可能不是在您的直接演示之前),您可以考虑更新到 v3 beta 版本。


顺便说一句,现在通常使用 'swiss' 绑定语法来执行此操作:

    this.AddBindings(
        new Dictionary<object, string>()
        {
            {lastname, "Text LastName"},
            {uservin, "Text CarVIN"}
        });

...并且TwoWay绑定是大多数非 Windows MvvmCross 绑定的默认设置。

于 2013-04-05T19:08:11.197 回答