rksoftware

Visual Studio とか C# とかが好きです

.NET Core 3 の WPF でもデザイナをあきらめない(ViewModel/SharedProject)

以前に .NET Core 3 の WPF でデザイナを使うために、XAML ファイルを .NetFramework プロジェクトで開くという力強い記事を書きました。 ViewModel は .NET Standard クラスライブラリを作るとスマートというスマートな記事も書きました。 その続編です。

■ .NET Core プロジェクトに ViewModel を追加したい。

.NET Core と .NET Standard では、使える API に差がありますし、あまりないと思いますが場合によっては手間をかけずに一つの .exe として出力したいなど、特殊な要求もあるかもしれません。

そこで、SharedProject(共有プロジェクト)です。

■ 共有プロジェクトの作成

  1. 共有プロジェクトは 共有プロジェクト で作成します。
    f:id:rksoftware:20190324171908j:plain
  2. デザイナで SharedProject に作った ViewModel が見えています。
    f:id:rksoftware:20190324171927j:plain

■ ViewModel より先の Model など

しかし、完璧に見えたこの方法もここで大きな問題に当たります。
f:id:rksoftware:20190324172005j:plain

Model クラスを .NET Core プロジェクトに作った場合、.NET Framework プロジェクトでエラーが出てしまいます。Model クラスも SharedProject に置けば解決しますが、そうするのならばできれば .NET Standard クラスライブラリで作りたいところです。

■ プリプロセッサ ディレクティブ

そこで、プリプロセッサ ディレクティブです。
ViewModel の中の Model に依存する部分を .NET Core プロジェクトでの有効にしてしまいましょう。
f:id:rksoftware:20190324172035j:plain
f:id:rksoftware:20190324172050j:plain

■ 動作

デザイナも使えるし、ViewModel も使えるしいい感じにできました。やはり SharedProject ですね。
f:id:rksoftware:20190324153117j:plain

□ .NET Core 3 の WPF でもデザイナをあきらめない記事シリーズの目次