All Projects → NeutroniumCore → Neutronium

NeutroniumCore / Neutronium

Licence: mit
🚀 Build .NET desktop applications using HTML, CSS and javascript.

Projects that are alternatives of or similar to Neutronium

Reactiveui
An advanced, composable, functional reactive model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming. ReactiveUI allows you to abstract mutable state away from your user interfaces, express the idea around a feature in one readable place and improve the testability of your application.
Stars: ✭ 6,709 (+463.78%)
Mutual labels:  reactive-programming, framework, mvvm, wpf
Cefsharp
.NET (WPF and Windows Forms) bindings for the Chromium Embedded Framework
Stars: ✭ 8,440 (+609.24%)
Mutual labels:  framework, wpf, browser
Orchestra
Orchestra is a composable shell and WPF framework built on top of Catel
Stars: ✭ 373 (-68.66%)
Mutual labels:  framework, mvvm, wpf
Camelotia
Cross-platform .NET sample GUI app for cloud file management. Built with ReactiveUI, AvaloniaUI, Universal Windows Platform, Xamarin Forms, and WPF, runs on Windows, Linux, Mac and Android.
Stars: ✭ 221 (-81.43%)
Mutual labels:  reactive-programming, mvvm, wpf
Waf
Win Application Framework (WAF) is a lightweight Framework that helps you to create well structured XAML Applications.
Stars: ✭ 539 (-54.71%)
Mutual labels:  framework, mvvm, wpf
Flaui
UI automation library for .Net
Stars: ✭ 892 (-25.04%)
Mutual labels:  framework, wpf
Visualstudiorevittemplate
Visual Studio project template for Revit add-in development. (using WPF and MVVM)
Stars: ✭ 22 (-98.15%)
Mutual labels:  mvvm, wpf
Fluent
Remove inconsistency of your view. Go Fluent
Stars: ✭ 31 (-97.39%)
Mutual labels:  reactive-programming, framework
Mvvmlight
The main purpose of the toolkit is to accelerate the creation and development of MVVM applications in Xamarin.Android, Xamarin.iOS, Xamarin.Forms, Windows 10 UWP, Windows Presentation Foundation (WPF), Silverlight, Windows Phone.
Stars: ✭ 973 (-18.24%)
Mutual labels:  mvvm, wpf
Sesame
Android architecture components made right
Stars: ✭ 48 (-95.97%)
Mutual labels:  reactive-programming, mvvm
Royjs
Royjs is only 4.8kb mvvm framework for React
Stars: ✭ 49 (-95.88%)
Mutual labels:  framework, mvvm
Loxodon Framework
An MVVM & Databinding framework that can use C# and Lua to develop games
Stars: ✭ 802 (-32.61%)
Mutual labels:  framework, mvvm
Cef4delphi
CEF4Delphi is an open source project to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC for Windows, Linux and MacOS.
Stars: ✭ 785 (-34.03%)
Mutual labels:  browser, chromium
Tumblthree
A Tumblr Blog Backup Application
Stars: ✭ 923 (-22.44%)
Mutual labels:  mvvm, wpf
Csgo Demos Manager
Stars: ✭ 782 (-34.29%)
Mutual labels:  mvvm, wpf
Cef2go
Go lang bindings for the Chromium Embedded Framework (CEF)
Stars: ✭ 780 (-34.45%)
Mutual labels:  browser, chromium
Dynamicdata
Reactive collections based on Rx.Net
Stars: ✭ 1,083 (-8.99%)
Mutual labels:  reactive-programming, mvvm
Subloader
Subloader is a simple and minimalistic subtitle downloader that enables you to quickly find and download subtitles for your video files.
Stars: ✭ 53 (-95.55%)
Mutual labels:  mvvm, wpf
Dmskin
DMSkin WPF 样式 UI 框架 | WPF Borderless Window | Custom Controls & Styles | MVVM Support
Stars: ✭ 1,189 (-0.08%)
Mutual labels:  mvvm, wpf
Stylet
A very lightweight but powerful ViewModel-First MVVM framework for WPF for .NET Framework and .NET Core, inspired by Caliburn.Micro.
Stars: ✭ 665 (-44.12%)
Mutual labels:  mvvm, wpf

Neutronium

Build status NuGet Badge MIT License

https://neutroniumcore.github.io/Neutronium/

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.

How?

  • 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>
<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!

Examples

here

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

Here

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.

Support

Jetbrains logo

Many thanks to JetBrains for support and awesome Resharper!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].