Edited at

Prism.FormsのNavigationService用のViewを一括登録する

More than 1 year has passed since last update.

WPFではかずきさんのこの記事の

http://blog.okazuki.jp/entry/2014/09/11/224645

Bootstrapperの作成の項で書いてあるViewの一括登録を使ってたんですが

こんな感じでPrism.FormsのRegisterTypeForNavigationも一括でできないもんかなといろいろ試してみたらこんな感じで出来ました。


コード

protected override void RegisterTypes() {

this.GetType().GetTypeInfo().Assembly
.DefinedTypes
.Where(t => t.Namespace?.EndsWith(".Views", System.StringComparison.Ordinal) ?? false)
.ForEach(t => {
Container.RegisterTypeForNavigation(t.AsType(), t.Name);
});

}

この例では.Viewsで終わる名前空間の型を根こそぎ登録しているだけです。

別の場所に置いているならViewのある名前空間を指定するようにしてください。


追記

匿名型がある場合にNamespaceがnullになり、そこで落ちてしまう問題があったので以下のように修正しました。

.Where(t => t.Namespace.EndsWith(".Views", System.StringComparison.Ordinal))



.Where(t => t.Namespace?.EndsWith(".Views", System.StringComparison.Ordinal) ?? false)