https://neutroniumcore.github.io/Neutronium/
Neutronium is a library to create .NET desktop applications using HTML, CSS and javascript.
Neutronium uses MVVM pattern exactly the same way as WPF application.
Neutronium provides bindings with Vue.js and Knockout.js to build powerful HTML5 UI.
Use all the power of the javascript stack to build .NET desktop applications.
Easy to use:
Easy to set-up:
Solution template available for a quick start
Use javascript framework cli tools to use the same tool chain as web developmenet taking chance of tools such as live reload.
Reuse ViewModel designed for WPF with a different View Engine.
Build UI on a 100% Open Source Stack
Migrate an existing WPF MVVM application to Neutronium
Use Neutronium to embed an HTML control in an WPF application
Reactive to property and collection changes
Pluggable architecture:
ViewModel (C#)
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void Set<T>(ref T pnv, T value, string pn)
{
pnv = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(pn));
}
}
public class Skill
{
public string Type { get;}
public string Name { get;}
public Skill (string name, string skillType)
{
Name = name;
Type = skillType;
}
}
public class Person: ViewModelBase
{
private string _LastName;
public string LastName
{
get { return _LastName; }
set { Set(ref _LastName, value, "LastName"); }
}
private string _Name;
public string Name
{
get { return _Name; }
set { Set(ref _Name, value, "Name"); }
}
public IList<Skill> Skills { get; private set; }
public ICommand RemoveSkill { get; private set; }
public Person()
{
Skills = new ObservableCollection<Skill>();
RemoveSkill = new RelayCommand<Skill>(s=> this.Skills.Remove(s));
}
}
View (HTML)
<!doctype html>
<html>
<head>
<title>Vue.js Example</title>
</head>
<body>
<input type="text" v-model="viewModel.Name" placeholder="First name" >
<ul>
<li v-for="skill in viewModel.Skills">
<span>{{skill.Type}}:{{skill.Name}}</span>
<button @click="RemoveSkill.Execute(skill)">Remove skill</button>
</li>
</ul>
<div>
<h2>{{viewModel.Name}}</h2>
<h2>{{viewModel.LastName}}</h2>
</div>
</body>
</html>
Create the component(C# Xaml)
<Neutronium:HTMLViewControl Uri="pack://application:,,,/src/index.html" />
The binding is done on the DataContext property just as standard WPF, That's it!
Best way to start with Neutronium is to download template C# solution from visual studio gallery.
See Here for detailed instructions.
Neutronium is electron for .NET? Well, kind of. Neutronium however is a higher abstraction so that you don't need to care about Chromium implementation such as renderer or browser processes.
Different from other libraries Awesomium is not open source. Last update was embedding Chrome 19 so it is pretty out of date. One neutronium distribution offer Awesomium as WebBrowser.
All are open source libraries presenting up-to-date C# binding for CEF
Offers all API of CEF. Used by Neutronium as a test WebBrowser using the mono-process option.
Same as CefGlue + remote API that handles communication between Chromium processes. Neutronium recommended set-up uses ChromiumFx as a WebBrowser.
Well documented and package solution (including nuget). Does not offer all CEF binding to javascript however.
ChromiumFx browser and knockout.js
This project is a continuation and improvement of MVVM-for-awesomium.