在MvvmCross 3.0.14中,绑定iOS的ICommands是否有不同的方法?

5

当我下载第N+1天的MvvmCross教程中的第5天(N=5)时,使用Xamarin Studio可以正常构建。但是,如果我将程序集从3.0.5更新到3.0.14,则iOS项目将无法构建。错误与以下两行有关:

set.Bind(button).To(vm => vm.MyCommand);
set.Bind(button2).To(vm => vm.GoSecondCommand);

错误信息如下:

无法将“lambda表达式”转换为非委托类型“string”

这个问题有什么变化吗?对象浏览器显示正确的方法需要一个Func<TSource, object>,但似乎编译器想使用string版本。奇怪的是,绑定到常规属性的两行正常工作,但绑定到ICommand的内容失败了。
1个回答

17

自从N=5被拍摄后,Xamarin已经添加了他们自己的PCL支持。

作为这种支持的一部分,在“添加引用”的程序集中,您需要将Touch UI项目添加到System.Windows.dll

这个System.Windows程序集包含一个ICommand类型的转发定义,这应该可以解决您的编译错误。


我已经仔细检查了是否有System.Windows.dll,但仍然遇到了他遇到的完全相同的错误。你有任何其他建议吗?我在这个问题上进行了大量的谷歌搜索。 - Michael
如果你无法使这个工作,可以参考 MvvmCross 教程下的“PictureTaking”解决方案(https://github.com/MvvmCross/MvvmCross-Tutorials),并比较你的 Nuget 包。我曾经有一个叫做 “MvvmCross” 的包,但其实我并不需要它。一旦我删除了它,程序就可以顺利构建了。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接