Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
December 27, 2015 00:53
November 24, 2018 10:51
September 8, 2020 01:15
September 8, 2020 01:16
September 8, 2020 01:16
September 8, 2020 01:15
September 8, 2020 01:16
June 25, 2020 01:59
January 17, 2019 00:09
September 14, 2016 18:12
December 5, 2018 22:08
July 12, 2015 19:16
August 12, 2016 00:01


Build status NuGet Badge MIT License

What is 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.

Why Neutronium?

  • Use all the power of the javascript stack to build .NET desktop applications.

  • Easy to use:

    • Architecture Neutronium application just like standard WPF application.
    • Compatible with popular MVVM libraries such as MVVM Light Toolkit and reactiveUi
    • Use standard javascript frameworks to build UI
  • Easy to set-up:

  • Build UI on a 100% Open Source Stack

Uses cases

Main features

  • Reactive to property and collection changes

  • Two way-binding beetween view and viewmodel, including command binding

  • Pluggable architecture:

    • Easily plug-in new javascript frameworks or even embedded browser.


  • Neutronium combines Chromium via ChromiumFx C# lib and a binding engine that converts back and forth C# POCO to javascript POCO.
  • Javascript objects are then used as ViewModel for javascript MVVM library such as knockout.js or Vue.js.
  • Listeners are set-up on C# and javascript side for two-way binding.

On the shoulders of giants

Usage - Example

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)

  • First option: use Vue.js
<!doctype html>
		<title>Vue.js Example</title>
		<input type="text" v-model="viewModel.Name" placeholder="First name" >
			<li v-for="skill in viewModel.Skills">
				<button @click="RemoveSkill.Execute(skill)">Remove skill</button>

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!



Get started

Best way to start with Neutronium is to download template C# solution from visual studio gallery.

See Here for detailed instructions.

Complete Documentation


Comparison with other libraries:

  • Electron

    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.

  • Awesomium

    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.

  • CefGlue, ChromiumFx, CefSharp

    All are open source libraries presenting up-to-date C# binding for CEF

  • CefGlue

    Offers all API of CEF. Used by Neutronium as a test WebBrowser using the mono-process option.

  • ChromiumFx

    Same as CefGlue + remote API that handles communication between Chromium processes. Neutronium recommended set-up uses ChromiumFx as a WebBrowser.

  • CefSharp

    Well documented and package solution (including nuget). Does not offer all CEF binding to javascript however.

Nuget packages

ChromiumFx browser and Vue.js

ChromiumFx browser and knockout.js

This project is a continuation and improvement of MVVM-for-awesomium.


Jetbrains logo

Many thanks to JetBrains for support and awesome Resharper!