无法将StringElement.Visible绑定到ViewModel中的boolean属性

时间:2013-10-28 11:14:25

标签: c# ios mvvmcross monotouch.dialog

在我的Mac上的Xamarin Studio项目中,我正在使用来自MvvmCross-Binaries的MvvmCross版本3.0.13, XS-iOS-Mac发行版程序集,我正在尝试将我的< em> CrossUI Dialog 基于查看,带有相应的 ViewModel 。具体来说,我在对话框视图中定义Root,如下所示:

var bindings = this.CreateInlineBindingTarget<ViewModel>();
Root = new RootElement("New Connection") {
  new Section {
    new StringElement("Test")
      .Bind(bindings, element => (object)element.SelectedCommand, vm => vm.TestConnection)
  },
  new Section {
    new StringElement ("Add")
      .Bind (bindings, element => element.Visible, vm => vm.CanAddConnection)
      .Bind (bindings, element => (object)element.SelectedCommand, vm => vm.AddConnection)
  }
};

ViewModel 中,如果测试成功,CanAddConnection命令将true设置为TestConnection

当我(在iOS模拟器中)运行并打开对话框时,会显示测试按钮,并隐藏添加按钮(按预期)。当我单击按钮并且测试成功时,不会显示添加按钮,而是在应用程序输出中显示此消息:

  

这是怎么发生的 - CurrentAttachedCell是非UITableView的孩子

为什么我的Visible绑定不起作用?


据我所知,我没有在上游进行任何导致this failure代码的代码定制(但我可能会遗漏一些东西)。

如果我将CanAddConnection绑定到另一个元素属性,例如Caption,则在视图中正确更新布尔值。

1 个答案:

答案 0 :(得分:1)

我认为您可能会违反ios7更改,该更改将作为https://github.com/MvvmCross/MvvmCross/issues/467的一部分进行处理

此修复程序将包含在3.0.14中(希望在下周) - 与此同时,最简单的解决方法可能是在您自己的构建中自行修补UpdateVisibility - 或实现自定义StringElement