Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. Supports Xamarin.iOS, Xamarin.Android, Xamarin.Mac, WPF, Windows Forms, Windows Phone 8 and Windows Store apps.
C# Other
Branch: master
Failed to load latest commit information.
.nuget Get tests showing up again
Microsoft.Reactive.Testing 64-bit'ize Testing
NuGet Set lowest version to 1.6.2.
PerfConsoleRunner Clean up this-and-that
Playground-Android Splat to 1.6.2
Playground-Mac Nuke Code Contracts, it hangs the build
Playground-Wpa81 Splat to 1.6.2
Playground-XamForms.Android Version bump Xamarin.Forms to 1.4.2
Playground-XamForms.iOS Version bump Xamarin.Forms to 1.4.2
Playground-XamForms Version bump Xamarin.Forms to 1.4.2
Playground-iOS Splat to 1.6.2
ReactiveUI.AndroidSupport Fixed some harmless typos
ReactiveUI.Blend Splat to 1.6.2
ReactiveUI.Events Retarget ReactiveUI.Xamforms to Profile259.
ReactiveUI.Testing Splat to 1.6.2
ReactiveUI.Tests Fixed some harmless typos
ReactiveUI.Winforms Splat to 1.6.2
ReactiveUI.XamForms Retarget ReactiveUI.Xamforms to Profile259.
ReactiveUI Fixed some harmless typos
RxUIViewModelGenerator Update packages.
docs Changes ref to out
packages Retarget ReactiveUI.Xamforms to Profile259.
script Add script to nuke remote branches
.gitattributes Add a .gitignore
.gitignore Added missing Xamarin.Mac pointers, updated MakeRelease.ps1
.gitmodules Nuke this Update release script to optionally bump NuGet version numbers for pa…
CleanFolders.ps1 Add powershell script to really clean everything.
CommonAssemblyInfo.cs Version bump to 6.5.0
Local.testsettings Fix CRLF
MakeRelease.ps1 Fixed up MakeRelease to point to Xamarin.Mac10
Makefile Package Restore the Windows sln too so that RxUI-Events has Nustache …
PerfConsoleRunner.psess Fix CRLF Update
ReactiveUI.sln Clean up this-and-that
ReactiveUI.sln.DotSettings Move common settings for VS solutions into a single referenced layer …
ReactiveUI.vsmdi Fix CRLF
ReactiveUI_VSAll.sln Update packages for EventBuilder.
ReactiveUI_VSAll.sln.DotSettings Move common settings for VS solutions into a single referenced layer …
ReactiveUI_XSAll.sln Changed output to Xamarin.Mac20 to reflect reality and added .nuspec …
ReactiveUI_XSIOS.sln Update ReactiveNSView : add .ctor(CGRect) for Unified API.
ReactiveUI_XSOnly.sln Rename some projects to be more consistent.
ReactiveUI_XSXamForms.sln added solution for developing and testing xam forms, included playgro…
Rebracer.xml Fix some settings and get rid of all crap.
RxUI.DotSettings Move common settings for VS solutions into a single referenced layer …
TraceAndTestImpact.testsettings Fix CRLF


Use the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform.

Supported Platforms

  • Xamarin.iOS
  • Xamarin.Android
  • Xamarin.Mac
  • WPF
  • Windows Forms
  • Windows Phone 8
  • Windows Store Apps

This library is organized into several high-level assemblies:

  • ReactiveUI - Core library that doesn't rely on any particular UI framework. ReactiveObject, the base ViewModel object, as well as ReactiveCollection, a more awesome ObservableCollection, is in here.

  • ReactiveUI.Xaml - Classes that require references to a Xaml'ly framework, like WPF or WinRT. ReactiveCommand, an implementation of ICommand, as well as the UserError classes are in this assembly.

  • ReactiveUI.Blend - This class has several Blend Behaviors and Triggers that make attaching ViewModel changes to Visual State Manager states.

  • ReactiveUI.Routing - A screens and navigation framework as well as ViewModel locator. This framework helps you to write applications using IoC containers to locate views, as well as navigating back and forwards between views.

A Compelling Example

public class ColorChooserThatDoesntLikeGreen : ReactiveObject
  // Declaring a read/write property

  byte _Red;
  public byte Red {
    get { return _Red; }
    set { this.RaiseAndSetIfChanged(value); }

  byte _Green;
  public byte Green {
    get { return _Green; }
    set { this.RaiseAndSetIfChanged(value); }

  byte _Blue;
  public byte Blue {
    get { return _Blue; }
    set { this.RaiseAndSetIfChanged(value); }

  // Declaring a Property that's based on an Observable

  ObservableAsPropertyHelper<Color> _Color;
  public Color Color {
    get { return _Color.Value; }

  ReactiveCommand OkButton { get; protected set; }

  public ColorChooserThatDoesntLikeGreen()
    var finalColor = this.WhenAny(x => x.Red, x => x.Green, x => x.Blue, 
        (r,g,b) => Color.FromRGB(r.Value, g.Value, b.Value));

    finalColor.ToProperty(this, x => x.Color, out _Color);

    // When the finalColor has full green, the Ok button is disabled
    OkButton = new ReactiveCommand(finalColor.Select(x => x.Green != 255));

Learn more

For more information on how to use ReactiveUI, check out ReactiveUI.

Something went wrong with that request. Please try again.