在我的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
,则在视图中正确更新布尔值。
答案 0 :(得分:1)
我认为您可能会违反ios7更改,该更改将作为https://github.com/MvvmCross/MvvmCross/issues/467的一部分进行处理
此修复程序将包含在3.0.14中(希望在下周) - 与此同时,最简单的解决方法可能是在您自己的构建中自行修补UpdateVisibility
- 或实现自定义StringElement