PresentationBase.Core
3.6.0
dotnet add package PresentationBase.Core --version 3.6.0
NuGet\Install-Package PresentationBase.Core -Version 3.6.0
<PackageReference Include="PresentationBase.Core" Version="3.6.0" />
paket add PresentationBase.Core --version 3.6.0
#r "nuget: PresentationBase.Core, 3.6.0"
// Install PresentationBase.Core as a Cake Addin #addin nuget:?package=PresentationBase.Core&version=3.6.0 // Install PresentationBase.Core as a Cake Tool #tool nuget:?package=PresentationBase.Core&version=3.6.0
PresentationBase.Core
A lightweight MVVM implementation targeting .NET Standard 2.0 and .NET 6.0.
It contains base implementations for view models, commands, data transfer object conversion and more.
Examples
Take a look at the Quick start in the wiki. Here are some basic examples for using PresentationBase.Core:
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.");
});
}
}
Product | Versions 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 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
- No dependencies.
-
net6.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. |
GitHub repositories
This package is not used by any popular GitHub repositories.
- Make AddCommands and RemoveCommands accessible.
- Commands found via reflection now check the class inheritance properly.
- Add .NET 6.0 as target framework.