HKW.ReactiveUI
0.3.5
dotnet add package HKW.ReactiveUI --version 0.3.5
NuGet\Install-Package HKW.ReactiveUI -Version 0.3.5
<PackageReference Include="HKW.ReactiveUI" Version="0.3.5" />
paket add HKW.ReactiveUI --version 0.3.5
#r "nuget: HKW.ReactiveUI, 0.3.5"
// Install HKW.ReactiveUI as a Cake Addin #addin nuget:?package=HKW.ReactiveUI&version=0.3.5 // Install HKW.ReactiveUI as a Cake Tool #tool nuget:?package=HKW.ReactiveUI&version=0.3.5
HKW.ReactiveUI
An MVVM library, based on ReactiveUI, using SourceGenerator and Fody for mixed source code generation.
ReactivePropertyAttribute
Adding Notifications to Properties Using Fody and SourceGenerator
partial class MyViewModel : ReactiveObject
{
[ReactiveProperty]
public string Name { get; set; } = string.Empty;
}
Generated code
partial class MyViewModel : ReactiveObject
{
private string $Name;
[ReactiveProperty]
public string Name
{
get => $Name;
set => RaiseAndSetName(ref $Name, value, true);
}
private void RaiseAndSetName(ref string backingField, string newValue, bool check = true)
{
if (!check || !EqualityComparer<string>.Default.Equals(backingField, newValue))
{
string oldValue = backingField;
this.RaisePropertyChanging("Name");
OnNameChanging(oldValue, newValue);
backingField = newValue;
this.RaisePropertyChanged("Name");
OnNameChanged(oldValue, newValue);
}
}
}
ReactiveCommandAttribute
Adding Command Properties to Methods Using the Source Generator
partial class MyViewModel : ReactiveObject
{
[ReactiveCommand]
public void Test() { }
[ReactiveCommand]
public async Task TestAsync() { }
}
Generated code
partial class MyViewModel : ReactiveObject
{
private ReactiveCommand<Unit, Unit> _testCommand;
public ReactiveCommand<Unit, Unit> TestCommand =>
_testCommand ?? (_testCommand = ReactiveCommand.Create(Test));
private ReactiveCommand<Unit, Unit> _testAsyncCommand;
public ReactiveCommand<Unit, Unit> Test1AsyncCommand =>
_testAsyncCommand ?? (_testAsyncCommand = ReactiveCommand.CreateFromTask(TestAsync));
[ReactiveCommand]
public void Test() { }
[ReactiveCommand]
public async Task TestAsync() { }
}
NotifyPropertyChangeFromAttribute
Notify property when target property changed
A field is generated to cache the value when EnableCache
is true
partial class MyViewModel : ReactiveObject
{
[NotifyPropertyChangeFrom(nameof(ID), nameof(Name))]
public bool IsSame => ID == Name;
protected void InitializeReactiveObject() { }
}
Generated code
partial class MyViewModel : ReactiveObject
{
private bool _isSame;
[NotifyPropertyChangeFrom(nameof(ID), nameof(Name))]
public bool IsSame => _isSame;
protected void InitializeReactiveObject()
{
// InitializeInInitializeObject = true
_isSame = Name == ID;
}
protected void RaiseIsSameChange()
{
this.RaiseAndSetIfChanged(ref _isSame, Name == ID, "IsSame");
}
private void RaiseAndSetName(ref string backingField, string newValue, bool check = true)
{
...
this.RaisePropertyChanged("Name");
RaiseIsSameChange();
}
private void RaiseAndSetID(ref string backingField, string newValue, bool check = true)
{
...
this.RaisePropertyChanged("ID");
RaiseIsSameChange();
}
}
When EnableCache
is false
partial class MyViewModel : ReactiveObject
{
[NotifyPropertyChangeFrom(nameof(ID), nameof(Name), EnableCache = false)]
public bool IsSame => ID == Name;
protected void InitializeReactiveObject() { }
}
Generated code
partial class MyViewModel : ReactiveObject
{
private bool _isSame;
[NotifyPropertyChangeFrom(nameof(ID), nameof(Name), EnableCache = false)]
public bool IsSame => Name == ID;
protected void InitializeReactiveObject()
{
// InitializeInInitializeObject = true
_isSame = Name == ID;
}
protected void RaiseIsSameChange()
{
this.RaiseAndSetIfChanged(ref _isSame, Name == ID, "IsSame");
}
private void RaiseAndSetName(ref string backingField, string newValue, bool check = true)
{
...
this.RaisePropertyChanging("Name");
this.RaisePropertyChanging("IsSame");
backingField = newValue;
this.RaisePropertyChanged("Name");
this.RaisePropertyChanged("IsSame");
...
}
private void RaiseAndSetID(ref string backingField, string newValue, bool check = true)
{
...
this.RaisePropertyChanging("ID");
this.RaisePropertyChanging("IsSame");
backingField = newValue;
this.RaisePropertyChanged("ID");
this.RaisePropertyChanged("IsSame");
...
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- ReactiveUI (>= 20.1.63)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on HKW.ReactiveUI:
Package | Downloads |
---|---|
HKW.Utils
Utils by HKW. |
|
HKW.WPF
A dedicated WPF library providing Collections, TypeExtension, MVVMDialogs, and other features. |
|
HKW.MVVMDialogs
MVVMDialogs |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.3.5 | 107 | 12/15/2024 |
0.3.4 | 85 | 12/13/2024 |
0.3.3 | 140 | 12/5/2024 |
0.3.2 | 128 | 12/2/2024 |
0.3.1 | 85 | 12/2/2024 |
0.3.0 | 89 | 12/1/2024 |
0.2.8 | 88 | 10/28/2024 |
0.2.7 | 84 | 10/28/2024 |
0.2.6 | 90 | 10/25/2024 |
0.2.5 | 108 | 10/20/2024 |
0.2.4 | 131 | 10/18/2024 |
0.2.3 | 89 | 10/14/2024 |
0.2.2 | 89 | 10/13/2024 |
0.2.1 | 94 | 10/12/2024 |
0.2.0 | 97 | 10/12/2024 |
0.1.10 | 94 | 10/8/2024 |
0.1.9 | 118 | 9/9/2024 |
0.1.8 | 103 | 9/9/2024 |
0.1.7 | 123 | 8/14/2024 |
0.1.6 | 123 | 8/14/2024 |
0.1.5 | 107 | 7/30/2024 |
0.1.4 | 102 | 7/15/2024 |
0.1.3 | 92 | 7/15/2024 |
0.1.2 | 152 | 7/6/2024 |
0.1.1 | 116 | 6/28/2024 |
0.1.0 | 110 | 6/26/2024 |