現状、PrismはXamarin.Forms.WPFに対応しておらず、エラーが出て使えないのですが、少しソースを修正してやることで、割と簡単に対応させることができたので、その方法を記載します。
対応方法
Prismのリポジトリをクローンして、v7.1.0のタグでチェックアウトします。
修正するファイルは以下の2つです。
Prism.csprojの修正
36行目をコメントアウトします。
<ItemGroup>
<!--<Compile Condition=" '$(TargetFramework)' == 'net45' " Remove="Navigation/**" />-->
<Compile Update="Properties\Resources.Designer.cs" DesignTime="True" AutoGen="True" DependentUpon="Resources.resx" />
<EmbeddedResource Update="Properties\Resources.resx" Generator="ResXFileCodeGenerator" LastGenOutput="Resources.Designer.cs" />
</ItemGroup>
IModuleManager.csの修正
27行目をコメントアウトします。
#if NET45
/// <summary>
/// Raised repeatedly to provide progress as modules are downloaded.
/// </summary>
//event EventHandler<ModuleDownloadProgressChangedEventArgs> ModuleDownloadProgressChanged;
#endif
NuGetパッケージの作成
Prism.DryIoc.FormsやPrism.Unity.Formsプロジェクトで、パックを実行すると、Source/Artifacts/Nugetにパッケージが作成されます。利用時は、通常のパッケージは使わずに、この作成したパッケージを参照するようにします。
今回の修正で変わっているパッケージは、Prism.Coreのみなので、これだけ参照するようにしても大丈夫です。ただし、この場合には、パッケージのバージョンを7.1.1など、現行のバージョンである7.1.0.431より大きくしておかなければいけません。
サンプル
簡単なサンプルを作成しました。
Prismを利用したViewModelのバインドや画面遷移がうまく動いていることが確認できます。もちろんiOSやAndroidでも普通に動きます。
サンプルのNuGetフォルダに修正したPrismのパッケージが含まれているので、それをダウンロードしてそのまま使ってもらっても構いません。
おわりに
完全にテストしたわけではないので、もしかしたら不具合が起きるかもしれませんが、普通に使う分には問題ないんじゃないかと思います。teratailの質問にもあって、気にはなっていたので、今回できることがわかって良かったです。