RxUIExt.Windsor 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package RxUIExt.Windsor --version 1.0.0                
NuGet\Install-Package RxUIExt.Windsor -Version 1.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RxUIExt.Windsor" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RxUIExt.Windsor --version 1.0.0                
#r "nuget: RxUIExt.Windsor, 1.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install RxUIExt.Windsor as a Cake Addin
#addin nuget:?package=RxUIExt.Windsor&version=1.0.0

// Install RxUIExt.Windsor as a Cake Tool
#tool nuget:?package=RxUIExt.Windsor&version=1.0.0                

RxUIExt 🧰🪟🐧🍏

Tools and extensions for ReactiveUI that will boost your productivity and app quality. I use this on daily basis, it includes some critical need-to-have tools when dealing with .NET UI frameworks, be it WPF, UWP, WinUI, Uno or Avalonia.

Main Package (RxUIExt)

This is the main multi-platform package. You don't need any bait-and-switch techniques for this, it will just work out of the box (like ReactiveUI does). Some of the tools include:

  • Shortcuts like ObserveOnMainThread and basic Interaction<,> extensions that are short and small but used thousands of times.
  • Basic types like ViewModel and ActivatableViewModel that I use all the time (very little code)
  • SerialReactiveCommand a command which allows serial execution, it automatically cancels the previous execution and starts a new one. I use this a lot when something needs to happen when a user selects something or when I want to allow users to change their minds in the middle of loading and start over. By default, ReactiveCommand has a double-tap protection, so once invoked, you have to either manually cancel it or wait for it to finish.
  • WhenExecuting which ticks a Unit right before the IReactiveCommand starts executing.
  • Idiomatic WhenActivated extension that also provides a ViewModel for you so it triggers when your viewmodel changes on the view itself. By default you are supposed to recreate the entire view if you change the viewmodel, which is not so very performant in any of the Microsoft's UI frameworks.
  • SubscribeSafe which makes sure that all exceptions are propagated to RxApp.DefaultExceptionHandler.
  • ViewModelChangeTracker is an idiomatic mechanism that you can use on your viewmodels to track changes on properties. Very useful in CRUD operations so you know exactly what's changed.

Windsor Integration (RxUIExt.Windsor)

If you, like me, prefer using Castle Windsor for DI, then this will help you easily integrate it with your ReactiveUI app. It offers a built-in IViewLocator implementation and extensions that help you automatically resolve views and viewmodels through Castle's very flexible fluent API.

WinUI Integration (RxUIExt.WinUI)

Basic tooling for WinUI development such as:

  • Flexible BoolConverter a NullConverter, you can do 99% of the UI with just these two since you can set True/Default or Null/NotNull values yourself in XAML or code-behind and just use them with your RxUI viewmodels.
  • Input dialog extension, similar to the one we had in VB6 days.
  • ViewHost implementation that actually works with WinUI. Sadly, the default RxUI one leaves a bit to be desired.

Other?

I will make Avalonia and WPF integrations in the future, covering some basic tools that everyone would use on a daily basis.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.1 255 1/3/2024
1.0.0 175 12/12/2023