Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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: reactive.input

This branch is 21 commits ahead, 950 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
.nuget
AndroidPlayground
Microsoft.Reactive.Testing
MobileSample-WP8
MobileSample-WinRT
MobileSample-WinRT80
NuGet
PerfConsoleRunner
Reactive.Input
ReactiveUI.Blend
ReactiveUI.Events
ReactiveUI.Mobile
ReactiveUI.NLog
ReactiveUI.Platforms
ReactiveUI.Testing
ReactiveUI.Tests
ReactiveUI
RxUIViewModelGenerator
XamarinMacPlayground
docs
ext
iOSPlayground
packages
script
.gitattributes
.gitignore
.gitmodules
CONTRIBUTING.md
COPYING
CommonAssemblyInfo.cs
Local.testsettings
MakeRelease.ps1
PerfConsoleRunner.psess
README.md
ReactiveUI.sln
ReactiveUI.sln.DotSettings
ReactiveUI.vsmdi
ReactiveUI_VSAll.sln
ReactiveUI_VSAll.sln.DotSettings
ReactiveUI_XSAll.sln
ReactiveUI_XSIOS.sln
ReactiveUI_XSOnly.sln
RxUI.DotSettings
TraceAndTestImpact.testsettings

README.md

ReactiveUI

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 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);

    // 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.