Ti-Soft.MvvmUtilites
1.0.0
dotnet add package Ti-Soft.MvvmUtilites --version 1.0.0
NuGet\Install-Package Ti-Soft.MvvmUtilites -Version 1.0.0
<PackageReference Include="Ti-Soft.MvvmUtilites" Version="1.0.0" />
<PackageVersion Include="Ti-Soft.MvvmUtilites" Version="1.0.0" />
<PackageReference Include="Ti-Soft.MvvmUtilites" />
paket add Ti-Soft.MvvmUtilites --version 1.0.0
#r "nuget: Ti-Soft.MvvmUtilites, 1.0.0"
#:package Ti-Soft.MvvmUtilites@1.0.0
#addin nuget:?package=Ti-Soft.MvvmUtilites&version=1.0.0
#tool nuget:?package=Ti-Soft.MvvmUtilites&version=1.0.0
MvvmUtilites
Небольшая платформонезависимая библиотека базовых классов для паттерна MVVM:
ObservableObject и семейство команд (RelayCommand, RelayCommand<T>,
AsyncRelayCommand, AsyncRelayCommand<T>).
Работает везде, где доступен System.Windows.Input.ICommand (он живёт в
System.ObjectModel, а не в WPF): WPF, WinUI, .NET MAUI, Avalonia, Uno и т.д.
Целевые платформы: netstandard2.0 и net8.0.
Установка
dotnet add package Ti-Soft.MvvmUtilites
ObservableObject
Реализует INotifyPropertyChanged. Метод Set присваивает поле и поднимает
PropertyChanged только при реальном изменении значения:
using MvvmUtilites;
public class PersonViewModel : ObservableObject
{
private string _name = string.Empty;
public string Name
{
get => _name;
set => Set(ref _name, value);
}
}
Дополнительно: OnPropertyChanged(params string[]) — уведомить о нескольких
свойствах; OnAllPropertiesChanged() — обо всех.
Команды и авто-обновление CanExecute
Команды можно «привязать» к владельцу-ObservableObject (параметр owner).
Тогда при любом изменении свойства через Set/OnPropertyChanged у всех
зарегистрированных команд автоматически вызывается RaiseCanExecuteChanged()
— не нужно дёргать CommandManager вручную.
public class EditorViewModel : ObservableObject
{
private string _text = string.Empty;
public string Text
{
get => _text;
set => Set(ref _text, value);
}
public RelayCommand SaveCommand { get; }
public EditorViewModel()
{
// owner: this — доступность кнопки обновится сама при изменении Text
SaveCommand = new RelayCommand(Save, () => !string.IsNullOrEmpty(Text), this);
}
private void Save() { /* ... */ }
}
Виды команд
| Тип | Сигнатура |
|---|---|
RelayCommand |
Action, Func<bool>? |
RelayCommand<T> |
Action<T>, Predicate<T>? |
AsyncRelayCommand |
Func<Task>, Func<bool>? |
AsyncRelayCommand<T> |
Func<T, Task>, Predicate<T>? |
Асинхронные команды блокируют повторный запуск, пока выполняются
(CanExecute возвращает false во время работы).
Лицензия
MIT © Artemy Sobolev (Ti-Soft)
| 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 is compatible. 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
- No dependencies.
-
net8.0
- No dependencies.
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.0 | 144 | 6/19/2026 |