[英]Prism for Xamarin.Forms unable to AutoWire
我正在为下一个客户项目尝试Prism.Forms。 不幸的是,我的样品出现了奇怪的现象。
借口似乎XF或Prism不喜欢我包含现有的XAML页面(在Evolve会议上,Brian Lagunas也提到过-该人-他本人)。 但是重命名页面也会使它丢掉,并且ViewModelLocator似乎无法再找到ViewModel。 即使我重新创建了具有相同名称的页面,也无法找到它的ViewModel。 手动设置BindingContext是可行的,但是我试图不为构造函数注入创建我的依赖项。
问题在处理现有代码时,以NavigationPage为根时,较小的更改导致NullReference异常。 这是一个工作示例应用程序的示例
https://github.com/hnabbasi/xamarin/tree/master/XFPrism/XFPrism
我正在使用NavigationPage并推送ContentPage。 然后,我按下另一个ContentPage,然后通过单击按钮并进行通信来显示模式页面。 我通过NavigationParameters将参数发送回第二内容页面。
要打破它,只需尝试将ISayHello服务与IPageDialogService交换即可。 我不确定这是怎么回事。
提前致谢 :)
INavigationService是命名类型,而我记得Unity的一个已知限制是命名类型必须在未命名类型之前。
正如Dan S.在评论中提到的。 当我调用PageDialogService来显示警报时,未设置MainPage,因此未设置NullReference。
如果您确实需要执行以下操作,以某种方式等待操作完成,请尝试Task.Yield()
。
我修复了以下情况,
// will yield for current operation of page appearing
await Task.Yield();
// by now, the page has appeared and set, so this should work fine
SayHiCommand.Execute(this);
我过去曾使用过这种解决方法。 如果您知道更好的处理方法,请置评。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.