繁体   English   中英

Xamarin.Prism无法自动连线的棱镜

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM