Jewelry.EditingSystem.CommunityToolkit.Mvvm
3.0.0
dotnet add package Jewelry.EditingSystem.CommunityToolkit.Mvvm --version 3.0.0
NuGet\Install-Package Jewelry.EditingSystem.CommunityToolkit.Mvvm -Version 3.0.0
<PackageReference Include="Jewelry.EditingSystem.CommunityToolkit.Mvvm" Version="3.0.0" />
<PackageVersion Include="Jewelry.EditingSystem.CommunityToolkit.Mvvm" Version="3.0.0" />
<PackageReference Include="Jewelry.EditingSystem.CommunityToolkit.Mvvm" />
paket add Jewelry.EditingSystem.CommunityToolkit.Mvvm --version 3.0.0
#r "nuget: Jewelry.EditingSystem.CommunityToolkit.Mvvm, 3.0.0"
#:package Jewelry.EditingSystem.CommunityToolkit.Mvvm@3.0.0
#addin nuget:?package=Jewelry.EditingSystem.CommunityToolkit.Mvvm&version=3.0.0
#tool nuget:?package=Jewelry.EditingSystem.CommunityToolkit.Mvvm&version=3.0.0
Jewelry.EditingSystem.CommunityToolkit.Mvvm
This is a first-class integration package for combining Jewelry.EditingSystem with CommunityToolkit.Mvvm.
EditingSystem supports the following two primary usage patterns:
- standalone
[Undoable]partial properties fromJewelry.EditingSystem [Undoable, ObservableProperty]properties fromCommunityToolkit.Mvvm
This package provides the latter. Existing CommunityToolkit.Mvvm integration code continues to work as-is.
using CommunityToolkit.Mvvm.ComponentModel;
using Jewelry.EditingSystem;
using Jewelry.EditingSystem.CommunityToolkit.Mvvm;
[EditingHistory(nameof(_history))]
public sealed partial class SampleViewModel : ObservableObject
{
private readonly History _history;
public SampleViewModel(History history) => _history = history;
[Undoable, ObservableProperty]
private string? name;
[Undoable, ObservableProperty]
public partial int Count { get; set; }
}
Undo and Redo reuse the property setters generated by CommunityToolkit.Mvvm. As a result, the CommunityToolkit.Mvvm setter pipeline—including PropertyChanging / PropertyChanged, validation, command notifications, and recipient broadcasts—is preserved during Undo and Redo.
Inheriting from ObservableObject is not required. A partial ViewModel that already inherits a different base class can instead use CommunityToolkit.Mvvm's [INotifyPropertyChanged] attribute.
[INotifyPropertyChanged]
[EditingHistory(nameof(history))]
public sealed partial class DerivedViewModel(History history) : ExistingViewModelBase
{
[Undoable, ObservableProperty]
public partial int Count { get; set; }
}
For the CommunityToolkit.Mvvm integration, EditingSystem uses the single-parameter OnXChanging(T value) and OnXChanged(T value) hooks. Use the two-parameter changing / changed hooks for application-specific logic.
EditingHistory can refer to a non-null History field, property, or primary-constructor parameter.
Choosing Between It and Standalone [Undoable]
For models that do not need CommunityToolkit.Mvvm observable properties, you can use standalone [Undoable] partial properties with Jewelry.EditingSystem alone.
using Jewelry.EditingSystem;
using Jewelry.EditingSystem.Annotations;
[EditingHistory(nameof(history))]
public sealed partial class Model(History history)
{
[Undoable]
public partial int Value { get; set; }
}
To avoid name collisions and effects on existing code, standalone attributes are placed in Jewelry.EditingSystem.Annotations, while CommunityToolkit.Mvvm integration attributes remain in Jewelry.EditingSystem.CommunityToolkit.Mvvm.
The handwritten SetEditableProperty(...) approach remains available as a low-level API for compatibility and specialized scenarios, but the two attribute-based patterns above are recommended in most cases.
| 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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
- CommunityToolkit.Mvvm (>= 8.4.2 && < 9.0.0)
- Jewelry.EditingSystem (>= 3.0.0)
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 |
|---|---|---|
| 3.0.0 | 108 | 9/1/2026 |