NuExt.Minimal.Mvvm 0.1.2

There is a newer version of this package available.
See the version list below for details.
The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package NuExt.Minimal.Mvvm --version 0.1.2                
NuGet\Install-Package NuExt.Minimal.Mvvm -Version 0.1.2                
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="NuExt.Minimal.Mvvm" Version="0.1.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NuExt.Minimal.Mvvm --version 0.1.2                
#r "nuget: NuExt.Minimal.Mvvm, 0.1.2"                
#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 NuExt.Minimal.Mvvm as a Cake Addin
#addin nuget:?package=NuExt.Minimal.Mvvm&version=0.1.2

// Install NuExt.Minimal.Mvvm as a Cake Tool
#tool nuget:?package=NuExt.Minimal.Mvvm&version=0.1.2                

NuExt.Minimal.Mvvm

NuExt.Minimal.Mvvm is a lightweight MVVM (Model-View-ViewModel) framework designed to provide the essential components needed for implementing the MVVM pattern in .NET applications. This package focuses on supporting proper concurrent operations and does not have any external dependencies, making it easy to integrate and use in various projects.

Features

  • Command Implementations:

    • Minimal.Mvvm.RelayCommand: A simple command implementation that delegates its execution logic via delegates.
    • Minimal.Mvvm.RelayCommand<T>: A relay command that operates with generic parameters.
  • Asynchronous Command Support:

    • Minimal.Mvvm.AsyncCommand: An asynchronous command that facilitates non-blocking operations without parameters.
    • Minimal.Mvvm.AsyncCommand<T>: An asynchronous command capable of handling operations with generic parameters.
  • Simplified Model Development:

    • Minimal.Mvvm.BindableBase: A base class that implements INotifyPropertyChanged, simplifying property change notification in models.
  • ViewModels Development:

    • Minimal.Mvvm.ViewModelBase: A base class for ViewModels, providing a foundation for building complex view models.
  • Concurrent Command Execution:

    • All IRelayCommand command types (RelayCommand, RelayCommand<T>, AsyncCommand, AsyncCommand<T>) support concurrent executions. This allows multiple invocations of the same command simultaneously without interfering with other executions.
  • CompositeCommand Implementation:

    • Minimal.Mvvm.CompositeCommand: Represents a command that aggregates multiple commands and executes them sequentially. This is useful when you need to perform a series of actions as a single command operation.

Installation

You can install NuExt.Minimal.Mvvm via NuGet:

dotnet add package NuExt.Minimal.Mvvm

Or through the Visual Studio package manager:

  1. Go to Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution....
  2. Search for NuExt.Minimal.Mvvm.
  3. Click "Install".

Source Code Package

In addition to the standard package, there is also a source code package available: NuExt.Minimal.Mvvm.Sources. This package allows you to embed the entire framework directly into your application, enabling easier source code exploring and debugging.

To install the source code package, use the following command:

dotnet add package NuExt.Minimal.Mvvm.Sources

Or through the Visual Studio package manager:

  1. Go to Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution....
  2. Search for NuExt.Minimal.Mvvm.Sources.
  3. Click "Install".

Usage

Example Using AsyncCommand with CancellationTokenSource Support
public class MyViewModel : ViewModelBase
{
    public IAsyncCommand MyCommand { get; }
    public ICommand CancelCommand { get; }

    public MyViewModel()
    {
        MyCommand = new AsyncCommand(ExecuteAsync, CanExecute);
        CancelCommand = new RelayCommand(ExecuteCancel, CanCancel);
    }

    private async Task ExecuteAsync()
    {
        // Retrieve the CancellationTokenSource for current execution method instance
        var cts = MyCommand.CancellationTokenSource;
        try
        {
            // Command execution logic
            await Task.Delay(1000, cts.Token);
        }
        catch (OperationCanceledException)
        {
            // Handle cancellation
        }
    }

    private bool CanExecute()
    {
        // Logic that determines whether the command can execute
        return true;
    }

    private void ExecuteCancel()
    {
        // Sends request to cancel the MyCommand execution
        MyCommand.Cancel();
    }

    private bool CanCancel()
    {
        // Logic that determines whether the cancel command can execute
        return MyCommand.IsExecuting;
    }
}
Example Using BindableBase
public class MyModel : BindableBase
{
    private string _name;

    public string Name
    {
        get => _name;
        set => SetProperty(ref _name, value);
    }
}

Contributing

Contributions are welcome! Feel free to submit issues, fork the repository, and send pull requests. Your feedback and suggestions for improvement are highly appreciated.

License

Licensed under the MIT License. See the LICENSE file for details.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  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 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. 
.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 is compatible. 
.NET Framework net461 was computed.  net462 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.6.2

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.
  • net6.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on NuExt.Minimal.Mvvm:

Package Downloads
NuExt.Minimal.Mvvm.Windows

NuExt.Minimal.Mvvm.Windows is an extension for the lightweight MVVM framework NuExt.Minimal.Mvvm, specifically designed for WPF applications. Commonly Used Types: Minimal.Mvvm.ModelBase Minimal.Mvvm.Windows.ControlViewModel Minimal.Mvvm.Windows.DocumentContentViewModelBase Minimal.Mvvm.Windows.WindowViewModel Minimal.Mvvm.Windows.IAsyncDialogService Minimal.Mvvm.Windows.IAsyncDocument Minimal.Mvvm.Windows.IAsyncDocumentManagerService Minimal.Mvvm.Windows.InputDialogService Minimal.Mvvm.Windows.OpenWindowsService Minimal.Mvvm.Windows.SettingsService Minimal.Mvvm.Windows.TabbedDocumentService Minimal.Mvvm.Windows.ViewLocator Minimal.Mvvm.Windows.WindowPlacementService

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.2.0 30 11/14/2024
0.1.6 83 11/7/2024