MonoGame embedded inside a WPF app as a dotnet new template.
This template uses .NET Core 6. If you're having trouble getting it to compile make sure you've updated to the latest version. I have confirmed that it works with:
- Visual Studio 2022 or later.
- .NET Core 6.0.422 which should install with Visual Studio anyway.
- The MonoGame NuGet packages are not .NET Core compatible, so you'll also need .NET Framework 4.7.2 installed.
To install the dotnet new template, clone this repository locally and install the template from a local directory.
dotnet new install MonoGame.WpfCore
After the template is installed you should see it in the list. To create a new project, first create an empty directory then run the template.
mkdir MyLevelEditor
cd MyLevelEditor
dotnet new monogamewpf
All done! Open the solution and run the project.
There's no magic here.
- The WPF project references the official
MonoGame.Framework.WindowsDXNuGet package. The same package can be used in your game. - There's only a handful of files required to do the heavy lifting.
- The
MonoGameContentControlis a standard WPF control in every other way.
I've been using and refining the MonoGameContentControl in my own projects for many years. Everything else in this template was built from the ground up using the latest .NET technologies.
- Thanks to the new
UseWPFflag introduced in .NET Core 3.0 we can build WPF projects in the newcsprojformat.
All of the code used to embed MonoGame in WPF is included in this template. You can edit and customize it however you like.
- The template includes a
MonoGameViewModelas an example of how to get started. If you use a different view model architecture, just change it. - The project references the
MonoGame.Content.Builder.Taskpackage so that it can automatically build yourContent.mgcbfile. You can load content using theContentmanager just like you do in your games. If your editor doesn't need this you can simply remove it and the .config\dotnet-tools.json file.
