以前に .NET Core 3 の WPF でデザイナを使うために、XAML ファイルを .NET Framework プロジェクトで開くという力強い記事を書きました。
その続編です。
■ ViewModel はどうするか?
■ 普通に .NET Core プロジェクトに ViewModel を追加してみます。
- プロジェクトに
MainWindowViewModel
クラスを追加。 - XAML に
xmlns:vm="clr-namespace:WpfAppNetCore"
を追加。(WpfAppNetCore はネームスペース) DataContract
にMainWindowViewModel
クラスを設定。
<Window.DataContext> <vm:MainWindowViewModel/> </Window.DataContext>
■ エラー
.NET Framework プロジェクトでエラーが出ます。.NET Framework プロジェクトからは MainWindowViewModel
クラスは見えないので言われてみれば当然ですね。
■ プロジェクト参照(失敗)
見えないなら参照してしまえと、.NET Framework プロジェクトから .NET Core プロジェクトの参照を試みると
プロジェクト '..\WpfAppNetCore\WpfAppNetCore.csproj' は 'netcoreapp3.0' を対象にしています。'.NETFramework,Version=v4.7.2' を対象とするプロジェクトからは参照できません。
WpfAppNetFramework
言われてみれば当然ですね。
■ .NET Standard
見えないなら、ViewModel クラスを .NET Core、.NET Framework のどちらでも参照できるクラスライブラリプロジェクトに入れてしまいましょう。
※ XAML の xmlns:vm="clr-namespace:WpfAppNetCore"
は xmlns:vm="clr-namespace:ClassLibraryNetStandard;assembly=ClassLibraryNetStandard"
に書き換えました。(WpfAppNetCore/ClassLibraryNetStandard はネームスペース)
■ 動作
デザイナも使えるし、ViewModel も使えるしいい感じにできました。やはり .NET Standard ですね。