「子」ビュー・モデルを作成して問題、それは特定の名前を使用しているのはなぜ私がプリズムのソースコードにこのプリズムXF:
Container.RegisterType<INavigationService, UnityPageNavigationService>(_navigationServiceName);
を見ることができますか?
class ItemViewModel : BindableBase
{
public ItemViewModel(INavigationService navigationService)
{
}
}
と私はページ上の項目を作成しています:
class MainPageViewModel : BindableBase
{
public IEnumerable<ItemViewModel> Items { get; private set; }
public MainPageViewModel(Funct<ItemViewModel> itemFactory)
{
}
public void OnNavigatedTo(NavigationParameters parameters) {
Items = ... // Create items, where each item is created using itemFactory
}
}
私は子ビュー・モデルで苦労してるので、私は求めています
Container.RegisterType<INavigationService, UnityPageNavigationService>();
:これを持っていないのはなぜ
しかし、DIが失敗したことがItemViewModel
を作成することはできませんので、それは例外をスロー:
Microsoft.Practices.Unity.ResolutionFailedException: の依存関係の解決に失敗しました。タイプ= "MyApp.ViewModels.ItemViewModel"、name = "(なし)" 中に例外が発生しました:解決中。 例外:InvalidOperationException - 現在の型Prism.Navigation.INavigationServiceがインタフェースであり、 を構築できません。
タイプマッピングがありません。
ありがとうございます!私は、ビューモデルの外でNavigationServiceを使用していません。 'ItemViewModel'はビューモデルです。これはあなたが参照している場合は、ページのビューモデルではありません。私のシナリオに対する解決策はありますか?私は自分のシナリオが特別だとは思わない。 –
現在検討中です。しかし、Xamarinがビューの親ページを取得する方法を私たちに与えることができない限り、それをサポートするためにできることはありません。 –
私の場合、それはビューとは関係ありません。私は、私が動作するためにnavigationServiceにDIが必要な子ビューモデルを作成しています。 –