簡體   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