我有一个使用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时,我希望我的viewmodel中的SETTER被调用,但事实并非如此。当我单击按钮并检查ViewModel上两个文本属性的值时,它们都是null。
有人知道我做错了什么吗?我周二有一个快速的演示版本,所有其他平台都运行得很漂亮,但似乎无法解决这个问题。
干杯,
/ J
答案 0 :(得分:3)
我认为问题在于你正在使用UITextView
个实例......但mvvmcross vnext只附带UITextField
个元素的双向绑定。
将UITextView
双向绑定添加到较旧的mvvmcross版本:
添加自定义目标绑定类 - 有点像v3中的那个:https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Binding.Touch/Target/MvxUITextViewTextTargetBinding.cs
在Setup.cs期间注册它,代码如下:
protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry)
{
base.FillTargetFactories(registry);
registry.RegisterFactory(new MvxSimplePropertyInfoTargetBindingFactory(typeof(MvxUITextViewTextTargetBinding), typeof(UITextView), "Text");
}
或者(但可能不是在您的直接演示之前),您可以考虑更新到v3 beta版本。
顺便说一下,使用'瑞士'绑定语法现在通常是正常的方法:
this.AddBindings(
new Dictionary<object, string>()
{
{lastname, "Text LastName"},
{uservin, "Text CarVIN"}
});
... TwoWay
绑定是大多数非Windows MvvmCross绑定的默认设置。