Gemini is a WPF framework designed specifically for building IDE-like applications. It is built on:
Gemini allows you to build your WPF application by composing separate modules. This provides a nice way of separating out the code for each part of your application. For example, here is the (very simple) module used in the demo program:
[Export(typeof(IModule))]
public class Module : ModuleBase
{
[Import]
private IPropertyGrid _propertyGrid;
public override void Initialize()
{
MainMenu.All
.First(x => x.Name == "View")
.Add(new MenuItem("Home", OpenHome));
var homeViewModel = IoC.Get<HomeViewModel>();
Shell.OpenDocument(homeViewModel);
_propertyGrid.SelectedObject = homeViewModel;
}
private IEnumerable<IResult> OpenHome()
{
yield return Show.Document<HomeViewModel>();
}
}
For full details, look at the demo program.
Gemini comes with three modules:
- An output pane
- A property grid pane
- A status bar
I've used Gemini on several of my own projects:
- Meshellator
- Rasterizr
- coming soon...
Much of the original ideas and code came from Rob Eisenberg, creator of the Caliburn Micro framework. I have extended and modified his code to integrate better with AvalonDock 2.0, which natively supports MVVM-style binding.