PresentationBase.Core 3.4.0

Install-Package PresentationBase.Core -Version 3.4.0
dotnet add package PresentationBase.Core --version 3.4.0
<PackageReference Include="PresentationBase.Core" Version="3.4.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PresentationBase.Core --version 3.4.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: PresentationBase.Core, 3.4.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install PresentationBase.Core as a Cake Addin
#addin nuget:?package=PresentationBase.Core&version=3.4.0

// Install PresentationBase.Core as a Cake Tool
#tool nuget:?package=PresentationBase.Core&version=3.4.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Take a look at the Quick start in the wiki. Here are some basic examples:

ViewModels with bindable properties

public class AwesomeViewModel : ViewModel
{
    private string _name;
  
    public string Name
    {
        get => _name;
        set => SetProperty(ref _name, value);
    }
}

... and with property validation

public class AwesomeViewModel : ViewModel
{
    private string _name;

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

    private IEnumerable<string> NameValidation(string value)
    {
        if (string.IsNullOrEmpty(value))
            yield return "Name cannot be null or empty!";
        else if (value == "sungaila")
            yield return "Name cannot be stupid!";
    }
}

ViewModel collections

public class AwesomeViewModel : ViewModel
{
    public ObservableViewModelCollection<ChildViewModel> Children { get; }
    
    public AwesomeViewModel()
    {
        Children = new ObservableViewModelCollection<ChildViewModel>(this);
        Children.Add(new ChildViewModel { Nickname = "Blinky" });
        Children.Add(new ChildViewModel { Nickname = "Pinky" });
        Children.Add(new ChildViewModel { Nickname = "Inky" });
        Children.Add(new ChildViewModel { Nickname = "Clyde" });
    }
}

Commands

Your command can be defined anywhere you want (as long as its assembly is referenced by the application). Please note that a parameterless constructor (or none at all) is needed.

public class AlertCommand : ViewModelCommand<AwesomeViewModel>
{
    public override void Execute(AwesomeViewModel parameter)
    {
        System.Windows.MessageBox.Show("You just clicked that button.");
    }

    public override bool CanExecute(AwesomeViewModel parameter)
    {
        return parameter.Name != "John Doe";
    }
}

... and async commands

public class AlertCommandAsync : ViewModelCommandAsync<AwesomeViewModel>
{
    protected override async Task ExecutionAsync(AwesomeViewModel parameter)
    {
        await Task.Run(() =>
        {
            System.Threading.Thread.Sleep(2000);
            System.Windows.MessageBox.Show("You clicked that button two seconds ago.");
        });
    }
}
  • .NETFramework 4.5

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.
  • net5.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on PresentationBase.Core:

Package Downloads
PresentationBase

A lightweight MVVM implementation for WPF (Windows Presentation Foundation) targeting both .NET Framework and .NET (Core).

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.4.0 224 1/6/2021
3.4.0-preview 178 11/11/2020
3.3.0 250 9/20/2020
3.2.0 194 8/24/2020
3.1.3 239 6/26/2020
3.0.0 232 5/20/2020

- Extracted class Bindable from ViewModel for simpler use cases
- Extracted interfaces for Bindable, ViewModel and TrxViewModel
- Added .NET 5.0 as a target framework
- .NET 5.0: Commands are being searched via ModuleInitializerAttribute