1

在我在 Mac 上的 Xamarin Studio 项目中,我使用来自MvvmCross-Binaries的 MvvmCross 版本 3.0.13 ,即XS-iOS-Mac Release程序集,并且我试图将基于CrossUI DialogView与相应的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设置为。trueTestConnection

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

这是怎么发生的——CurrentAttachedCell 是非 UITableView 的子项

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


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

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

4

1 回答 1

1

我认为您可能对作为https://github.com/MvvmCross/MvvmCross/issues/467一部分解决的 ios7 更改感到不满

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

于 2013-10-28T14:16:40.460 回答