16 Commits

12 changed files with 133 additions and 181 deletions

View File

@@ -5,17 +5,18 @@ on:
branches: branches:
- "dev" - "dev"
paths: paths:
- "SimpleToolkit.MVVM**" - "MSEssentials.UI.Common.MVVM**"
pull_request: pull_request:
branches: branches:
- "dev" - "dev"
- "main" - "main"
paths: paths:
- "SimpleToolkit.MVVM**" - "MSEssentials.UI.Common.MVVM**"
jobs: jobs:
build: build:
name: Build name: Build
runs-on: linux
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v6

View File

@@ -8,11 +8,12 @@ on:
branches: branches:
- "main" - "main"
paths: paths:
- "SimpleToolkit.MVVM**" - "MSEssentials.UI.Common.MVVM**"
jobs: jobs:
build: build:
name: Build name: Build
runs-on: linux
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v6
@@ -26,6 +27,7 @@ jobs:
run: dotnet build --no-restore run: dotnet build --no-restore
version: version:
name: Determine version name: Determine version
runs-on: linux
needs: build needs: build
steps: steps:
- name: Checkout - name: Checkout
@@ -49,6 +51,7 @@ jobs:
version: ${{ steps.gitversion.outputs.SemVer }} version: ${{ steps.gitversion.outputs.SemVer }}
pack: pack:
name: Pack name: Pack
runs-on: linux
needs: version needs: version
steps: steps:
- name: Checkout - name: Checkout
@@ -63,11 +66,12 @@ jobs:
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: nuget name: nuget
path: ./SimpleToolkit.MVVM.${{needs.version.outputs.version}}.nupkg path: ./MSEssentials.UI.Common.MVVM.${{needs.version.outputs.version}}.nupkg
outputs: outputs:
version: ${{needs.version.outputs.version}} version: ${{needs.version.outputs.version}}
publish: publish:
name: Publish name: Publish
runs-on: linux
needs: pack needs: pack
steps: steps:
- name: Download artifact - name: Download artifact
@@ -80,11 +84,11 @@ jobs:
with: with:
dotnet-version: 8.0.x dotnet-version: 8.0.x
- name: Publish - name: Publish
run: dotnet nuget push ./SimpleToolkit.MVVM.${{needs.pack.outputs.version}}.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_KEY }} run: dotnet nuget push ./MSEssentials.UI.Common.MVVM.${{needs.pack.outputs.version}}.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_KEY }}
- name: Create Release - name: Create Release
uses: akkuman/gitea-release-action@v1 uses: akkuman/gitea-release-action@v1
with: with:
tag_name: ${{needs.pack.outputs.version}} tag_name: ${{needs.pack.outputs.version}}
name: ${{needs.pack.outputs.version}} name: ${{needs.pack.outputs.version}}
files: |- files: |-
SimpleToolkit.MVVM.${{needs.pack.outputs.version}}.nupkg MSEssentials.UI.Common.MVVM.${{needs.pack.outputs.version}}.nupkg

View File

@@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2026 SimpleToolkit Copyright (c) 2026 Mateusz Skoczek
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including associated documentation files (the "Software"), to deal in the Software without restriction, including

View File

@@ -1,6 +1,6 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleToolkit.MVVM", "SimpleToolkit.MVVM\SimpleToolkit.MVVM.csproj", "{7B017D3C-E116-20B5-21F7-692316023149}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSEssentials.UI.Common.MVVM", "MSEssentials.UI.Common.MVVM\MSEssentials.UI.Common.MVVM.csproj", "{7B017D3C-E116-20B5-21F7-692316023149}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution

View File

@@ -3,13 +3,13 @@
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<Title>SimpleToolkit.MVVM</Title> <Title>MSEssentials.UI.Common.MVVM</Title>
<Authors>Mateusz Skoczek</Authors> <Authors>Mateusz Skoczek</Authors>
<Copyright>Mateusz Skoczek</Copyright> <Copyright>Mateusz Skoczek</Copyright>
<PackageProjectUrl>https://repos.mateuszskoczek.com/SimpleToolkit/</PackageProjectUrl> <PackageProjectUrl>https://repos.mateuszskoczek.com/MSEssentials/</PackageProjectUrl>
<PackageLicenseUrl>https://repos.mateuszskoczek.com/SimpleToolkit/SimpleToolkit.MVVM/src/branch/main/LICENSE</PackageLicenseUrl> <PackageLicenseUrl>https://repos.mateuszskoczek.com/MSEssentials/MSEssentials.UI.Common.MVVM/src/branch/main/LICENSE</PackageLicenseUrl>
<PackageIcon>icon.png</PackageIcon> <PackageIcon>icon.png</PackageIcon>
<RepositoryUrl>https://repos.mateuszskoczek.com/SimpleToolkit/SimpleToolkit.MVVM</RepositoryUrl> <RepositoryUrl>https://repos.mateuszskoczek.com/MSEssentials/MSEssentials.UI.Common.MVVM</RepositoryUrl>
<Description>Set of helpers, class extensions, UI controls used in my other C# projects - MVVM architecture models and helper classes</Description> <Description>Set of helpers, class extensions, UI controls used in my other C# projects - MVVM architecture models and helper classes</Description>
<PackageReadmeFile>README.md</PackageReadmeFile> <PackageReadmeFile>README.md</PackageReadmeFile>
</PropertyGroup> </PropertyGroup>

View File

@@ -0,0 +1,8 @@
namespace MSEssentials.UI.Common.MVVM;
public class NavigationViewItem
{
public string Name { get; set; }
public string IconSource { get; set; }
public Type ViewModel { get; set; }
}

View File

@@ -1,37 +1,18 @@
using System; using System.Collections.ObjectModel;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SimpleToolkit.MVVM namespace MSEssentials.UI.Common.MVVM
{ {
public class ObservableDictionary<TKey, TValue> : ObservableCollection<ObservableKeyValuePair<TKey, TValue>>, IDictionary<TKey, TValue>, IEnumerable<ObservableKeyValuePair<TKey, TValue>> public class ObservableDictionary<TKey, TValue> : ObservableCollection<ObservableKeyValuePair<TKey, TValue>>, IDictionary<TKey, TValue>, IEnumerable<ObservableKeyValuePair<TKey, TValue>>
{ {
#region PROPERTIES
public ICollection<TKey> Keys => Items.Select(p => p.Key).ToList(); public ICollection<TKey> Keys => Items.Select(p => p.Key).ToList();
public ICollection<TValue> Values => Items.Select(p => p.Value).ToList(); public ICollection<TValue> Values => Items.Select(p => p.Value).ToList();
public bool IsReadOnly => false; public bool IsReadOnly => false;
#endregion
#region INDEXERS
public TValue this[TKey key] public TValue this[TKey key]
{ {
get get => !TryGetValue(key, out TValue result) ? throw new ArgumentException("Key not found") : result;
{
if (!TryGetValue(key, out TValue result))
{
throw new ArgumentException("Key not found");
}
return result;
}
set set
{ {
if (ContainsKey(key)) if (ContainsKey(key))
@@ -45,16 +26,11 @@ namespace SimpleToolkit.MVVM
} }
} }
#endregion
public ObservableDictionary()
#region CONSTRUCTORS
public ObservableDictionary() : base()
{ } { }
public ObservableDictionary(IDictionary<TKey, TValue> dictionary) : base() public ObservableDictionary(IDictionary<TKey, TValue> dictionary)
{ {
foreach (KeyValuePair<TKey, TValue> pair in dictionary) foreach (KeyValuePair<TKey, TValue> pair in dictionary)
{ {
@@ -62,12 +38,8 @@ namespace SimpleToolkit.MVVM
} }
} }
#endregion
public void Add(KeyValuePair<TKey, TValue> item) => Add(item.Key, item.Value);
#region PUBLIC METHODS
public void Add(TKey key, TValue value) public void Add(TKey key, TValue value)
{ {
if (ContainsKey(key)) if (ContainsKey(key))
@@ -77,8 +49,6 @@ namespace SimpleToolkit.MVVM
Add(new ObservableKeyValuePair<TKey, TValue>(key, value)); Add(new ObservableKeyValuePair<TKey, TValue>(key, value));
} }
public void Add(KeyValuePair<TKey, TValue> item) => Add(item.Key, item.Value);
public bool Contains(KeyValuePair<TKey, TValue> item) public bool Contains(KeyValuePair<TKey, TValue> item)
{ {
ObservableKeyValuePair<TKey, TValue> pair = GetKeyValuePairByTheKey(item.Key); ObservableKeyValuePair<TKey, TValue> pair = GetKeyValuePairByTheKey(item.Key);
@@ -96,20 +66,8 @@ namespace SimpleToolkit.MVVM
return !Equals(default(ObservableKeyValuePair<TKey, TValue>), pair); return !Equals(default(ObservableKeyValuePair<TKey, TValue>), pair);
} }
public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex) public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex) =>
{
throw new NotImplementedException(); throw new NotImplementedException();
}
public bool Remove(TKey key)
{
List<ObservableKeyValuePair<TKey, TValue>> remove = ((ObservableCollection<ObservableKeyValuePair<TKey, TValue>>)this).Where(pair => Equals(key, pair.Key)).ToList();
foreach (ObservableKeyValuePair<TKey, TValue> pair in remove)
{
Remove(pair);
}
return remove.Count > 0;
}
public bool Remove(KeyValuePair<TKey, TValue> item) public bool Remove(KeyValuePair<TKey, TValue> item)
{ {
@@ -124,6 +82,16 @@ namespace SimpleToolkit.MVVM
} }
return Remove(pair); return Remove(pair);
} }
public bool Remove(TKey key)
{
List<ObservableKeyValuePair<TKey, TValue>> remove = ((ObservableCollection<ObservableKeyValuePair<TKey, TValue>>)this).Where(pair => Equals(key, pair.Key)).ToList();
foreach (ObservableKeyValuePair<TKey, TValue> pair in remove)
{
Remove(pair);
}
return remove.Count > 0;
}
public bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value) public bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value)
{ {
@@ -137,16 +105,11 @@ namespace SimpleToolkit.MVVM
return true; return true;
} }
IEnumerator<KeyValuePair<TKey, TValue>> IEnumerable<KeyValuePair<TKey, TValue>>.GetEnumerator() => ((ObservableCollection<ObservableKeyValuePair<TKey, TValue>>)this).Select(i => new KeyValuePair<TKey, TValue>(i.Key, i.Value)).GetEnumerator(); IEnumerator<KeyValuePair<TKey, TValue>> IEnumerable<KeyValuePair<TKey, TValue>>.GetEnumerator() =>
((ObservableCollection<ObservableKeyValuePair<TKey, TValue>>)this).Select(i => new KeyValuePair<TKey, TValue>(i.Key, i.Value)).GetEnumerator();
#endregion
private ObservableKeyValuePair<TKey, TValue> GetKeyValuePairByTheKey(TKey key) =>
((ObservableCollection<ObservableKeyValuePair<TKey, TValue>>)this).FirstOrDefault(i => i.Key.Equals(key));
#region PRIVATE METHODS
private ObservableKeyValuePair<TKey, TValue> GetKeyValuePairByTheKey(TKey key) => ((ObservableCollection<ObservableKeyValuePair<TKey, TValue>>)this).FirstOrDefault(i => i.Key.Equals(key));
#endregion
} }
} }

View File

@@ -5,21 +5,14 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace SimpleToolkit.MVVM namespace MSEssentials.UI.Common.MVVM
{ {
public class ObservableKeyValuePair<TKey, TValue> : INotifyPropertyChanged public class ObservableKeyValuePair<TKey, TValue> : INotifyPropertyChanged
{ {
#region FIELDS
private TKey _key; private TKey _key;
private TValue _value; private TValue _value;
#endregion
#region PROPERTIES
public TKey Key public TKey Key
{ {
get => _key; get => _key;
@@ -38,12 +31,7 @@ namespace SimpleToolkit.MVVM
NotifyPropertyChanged(nameof(Value)); NotifyPropertyChanged(nameof(Value));
} }
} }
#endregion
#region CONSTRUCTORS
public ObservableKeyValuePair() : this(default, default) public ObservableKeyValuePair() : this(default, default)
{ } { }
@@ -54,22 +42,10 @@ namespace SimpleToolkit.MVVM
_value = value; _value = value;
} }
#endregion
#region PRIVATE METHODS
private void NotifyPropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); private void NotifyPropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
#endregion
#region EVENTS
public event PropertyChangedEventHandler? PropertyChanged; public event PropertyChangedEventHandler? PropertyChanged;
#endregion
} }
} }

View File

@@ -0,0 +1,51 @@
# MSEssentials.UI.Common.MVVM
### Set of helpers, class extensions, UI controls used in my other C# projects
MSEssentials is package of useful classes, helpers, extensions and UI controls, I use in my C# projects. MVVM subpackage contains class, method and property MVVM.
---
## NuGet registry status
| Subpackage | Status |
|-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **MSEssentials.UI.Common.MVVM** | [![NuGet version (MSEssentials.UI.Common.MVVM)](https://img.shields.io/nuget/v/MSEssentials.UI.Common.MVVM.svg?style=flat-square)](https://www.nuget.org/packages/MSEssentials.UI.Common.MVVM/) |
| MSEssentials.Extensions | [![NuGet version (MSEssentials.Extensions)](https://img.shields.io/nuget/v/MSEssentials.Extensions.svg?style=flat-square)](https://www.nuget.org/packages/MSEssentials.Extensions/) |
| MSEssentials.AspNetCore.Attributes | [![NuGet version (MSEssentials.AspNetCore.Attributes)](https://img.shields.io/nuget/v/MSEssentials.AspNetCore.Attributes.svg?style=flat-square)](https://www.nuget.org/packages/MSEssentials.AspNetCore.Attributes/) |
| MSEssentials.UI.Common.Converters | [![NuGet version (MSEssentials.UI.Common.Converters)](https://img.shields.io/nuget/v/MSEssentials.UI.Common.Converters.svg?style=flat-square)](https://www.nuget.org/packages/MSEssentials.UI.Common.Converters/) |
| MSEssentials.UI.WinUI.Behaviors | [![NuGet version (MSEssentials.UI.WinUI.Behaviors)](https://img.shields.io/nuget/v/MSEssentials.UI.WinUI.Behaviors.svg?style=flat-square)](https://www.nuget.org/packages/MSEssentials.UI.WinUI.Behaviors/) |
| MSEssentials.UI.WinUI.Converters | [![NuGet version (MSEssentials.UI.WinUI.Converters)](https://img.shields.io/nuget/v/MSEssentials.UI.WinUI.Converters.svg?style=flat-square)](https://www.nuget.org/packages/MSEssentials.UI.WinUI.Converters/) |
| MSEssentials.UI.WinUI.Controls | [![NuGet version (MSEssentials.UI.WinUI.Controls)](https://img.shields.io/nuget/v/MSEssentials.UI.WinUI.Controls.svg?style=flat-square)](https://www.nuget.org/packages/MSEssentials.UI.WinUI.Controls/) |
## Features
- **ObservableKeyValuePair** - observable version of KeyValuePair
- **ObservableDictionary** - observable version of Dictionary
- **NavigationViewItem** - list item model (for example for navigation controls), allows to bind item to view model
## Installation and usage
You can download package from official NuGet registry or .nupkg file itself from Releases tab.
**CLI:**
```
dotnet add package MSEssentials.UI.Common.MVVM
```
**Package reference in .csproj file:**
```
<PackageReference Include="MSEssentials.UI.Common.MVVM" Version="<version>" />
```
## Attribution and contribution
This project is open source on MIT License, so you can just copy and upload again to your repository. But according to the license, you must include information about the original author. You can find license [here](https://repos.mateuszskoczek.com/MSEssentials/MSEssentials.UI.Common.MVVM/src/branch/main/LICENSE).
However, the preferred way to contribute would be to propose improvements in a pull request, through issues, or through other means of communication.
**Other sources:**
- Icon by [Icons8](icons8.com)

View File

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -1,13 +1,20 @@
<p align="center"><img src=".gitea/readme/icon.png"/></p> <p align="center"><img src=".gitea/readme/icon.png"/></p>
<h1 align="center">SimpleToolkit.MVVM</h1> <h1 align="center">MSEssentials.UI.Common.MVVM</h1>
<h3 align="center"><b>Set of helpers, class extensions, UI controls used in my other C# projects</b></h3> <h3 align="center"><b>Set of helpers, class extensions, UI controls used in my other C# projects</b></h3>
<p align="center">SimpleToolkit is package of useful classes, helpers, extensions and UI controls, I use in my C# projects. MVVM subpackage contains models and helper classes for implementing MVVM architecture.</p> <p align="center">MSEssentials is package of useful classes, helpers, extensions and UI controls, I use in my C# projects. MVVM subpackage contains models and helper classes for implementing MVVM architecture.</p>
--- ---
## Informations
> [!Important]
> **For Github users:**
>
> This is only mirror repository. All changes are first uploaded to the repository <a href="https://repos.mateuszskoczek.com/MSEssentials/MSEssentials.UI.Common.MVVM">here</a>. Releases are also published on original repository. However, Github repository handles issues and pull requests for better accessibility.
## NuGet registry status ## NuGet registry status
<table> <table>
@@ -21,10 +28,10 @@
</tr> </tr>
<tr> <tr>
<td> <td>
<b>SimpleToolkit.MVVM</b> <b>MSEssentials.UI.Common.MVVM</b>
</td> </td>
<td> <td>
<a href="https://www.nuget.org/packages/SimpleToolkit.MVVM/"><img src="https://img.shields.io/nuget/v/SimpleToolkit.MVVM.svg?style=flat-square"></a> <a href="https://www.nuget.org/packages/MSEssentials.UI.Common.MVVM/"><img src="https://img.shields.io/nuget/v/MSEssentials.UI.Common.MVVM.svg?style=flat-square"></a>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -34,58 +41,50 @@
</tr> </tr>
<tr> <tr>
<td> <td>
SimpleToolkit.Extensions MSEssentials.Extensions
</td> </td>
<td> <td>
<a href="https://www.nuget.org/packages/SimpleToolkit.Extensions/"><img src="https://img.shields.io/nuget/v/SimpleToolkit.Extensions.svg?style=flat-square"></a> <a href="https://www.nuget.org/packages/MSEssentials.Extensions/"><img src="https://img.shields.io/nuget/v/MSEssentials.Extensions.svg?style=flat-square"></a>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
SimpleToolkit.Attributes MSEssentials.AspNetCore.Attributes
</td> </td>
<td> <td>
<a href="https://www.nuget.org/packages/SimpleToolkit.Attributes/"><img src="https://img.shields.io/nuget/v/SimpleToolkit.Attributes.svg?style=flat-square"></a> <a href="https://www.nuget.org/packages/MSEssentials.AspNetCore.Attributes/"><img src="https://img.shields.io/nuget/v/MSEssentials.AspNetCore.Attributes.svg?style=flat-square"></a>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
SimpleToolkit.UI.Models MSEssentials.UI.Common.Converters
</td> </td>
<td> <td>
<a href="https://www.nuget.org/packages/SimpleToolkit.UI.Models/"><img src="https://img.shields.io/nuget/v/SimpleToolkit.UI.Models.svg?style=flat-square"></a> <a href="https://www.nuget.org/packages/MSEssentials.UI.Common.Converters/"><img src="https://img.shields.io/nuget/v/MSEssentials.UI.Common.Converters.svg?style=flat-square"></a>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
SimpleToolkit.UI.WinUI.Behaviors MSEssentials.UI.WinUI.Behaviors
</td> </td>
<td> <td>
<a href="https://www.nuget.org/packages/SimpleToolkit.UI.WinUI.Behaviors/"><img src="https://img.shields.io/nuget/v/SimpleToolkit.UI.WinUI.Behaviors.svg?style=flat-square"></a> <a href="https://www.nuget.org/packages/MSEssentials.UI.WinUI.Behaviors/"><img src="https://img.shields.io/nuget/v/MSEssentials.UI.WinUI.Behaviors.svg?style=flat-square"></a>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
SimpleToolkit.UI.WinUI.Converters MSEssentials.UI.WinUI.Converters
</td> </td>
<td> <td>
<a href="https://www.nuget.org/packages/SimpleToolkit.UI.WinUI.Converters/"><img src="https://img.shields.io/nuget/v/SimpleToolkit.UI.WinUI.Converters.svg?style=flat-square"></a> <a href="https://www.nuget.org/packages/MSEssentials.UI.WinUI.Converters/"><img src="https://img.shields.io/nuget/v/MSEssentials.UI.WinUI.Converters.svg?style=flat-square"></a>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
SimpleToolkit.UI.WinUI.Controls MSEssentials.UI.WinUI.Controls
</td> </td>
<td> <td>
<a href="https://www.nuget.org/packages/SimpleToolkit.UI.WinUI.Controls/"><img src="https://img.shields.io/nuget/v/SimpleToolkit.UI.WinUI.Controls.svg?style=flat-square"></a> <a href="https://www.nuget.org/packages/MSEssentials.UI.WinUI.Controls/"><img src="https://img.shields.io/nuget/v/MSEssentials.UI.WinUI.Controls.svg?style=flat-square"></a>
</td>
</tr>
<tr>
<td>
SimpleToolkit.UI.WinUI.Helpers
</td>
<td>
<a href="https://www.nuget.org/packages/SimpleToolkit.UI.WinUI.Helpers/"><img src="https://img.shields.io/nuget/v/SimpleToolkit.UI.WinUI.Helpers.svg?style=flat-square"></a>
</td> </td>
</tr> </tr>
</table> </table>
@@ -94,6 +93,7 @@
- **ObservableKeyValuePair** - observable version of KeyValuePair - **ObservableKeyValuePair** - observable version of KeyValuePair
- **ObservableDictionary** - observable version of Dictionary - **ObservableDictionary** - observable version of Dictionary
- **NavigationViewItem** - list item model (for example for navigation controls), allows to bind item to view model
## Installation and usage ## Installation and usage
@@ -102,18 +102,18 @@ You can download package from official NuGet registry or .nupkg file itself from
**CLI:** **CLI:**
``` ```
dotnet add package SimpleToolkit.MVVM dotnet add package MSEssentials.UI.Common.MVVM
``` ```
**Package reference in .csproj file:** **Package reference in .csproj file:**
``` ```
<PackageReference Include="SimpleToolkit.MVVM" Version="<version>" /> <PackageReference Include="MSEssentials.UI.Common.MVVM" Version="<version>" />
``` ```
## Attribution and contribution ## Attribution and contribution
This project is open source on MIT License, so you can just copy and upload again to your repository. But according to the license, you must include information about the original author. You can find license <a href="https://repos.mateuszskoczek.com/SimpleToolkit/SimpleToolkit.MVVM/src/branch/main/LICENSE">here</a>. This project is open source on MIT License, so you can just copy and upload again to your repository. But according to the license, you must include information about the original author. You can find license <a href="https://repos.mateuszskoczek.com/MSEssentials/MSEssentials.UI.Common.MVVM/src/branch/main/LICENSE">here</a>.
However, the preferred way to contribute would be to propose improvements in a pull request, through issues, or through other means of communication. However, the preferred way to contribute would be to propose improvements in a pull request, through issues, or through other means of communication.

View File

@@ -1,51 +0,0 @@
# SimpleToolkit.MVVM
### Set of helpers, class extensions, UI controls used in my other C# projects
SimpleToolkit is package of useful classes, helpers, extensions and UI controls, I use in my C# projects. MVVM subpackage contains class, method and property MVVM.
---
## NuGet registry status
| Subpackage | Status |
|-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **SimpleToolkit.MVVM** | [![NuGet version (SimpleToolkit.MVVM)](https://img.shields.io/nuget/v/SimpleToolkit.MVVM.svg?style=flat-square)](https://www.nuget.org/packages/SimpleToolkit.MVVM/) |
| SimpleToolkit.Extensions | [![NuGet version (SimpleToolkit.Extensions)](https://img.shields.io/nuget/v/SimpleToolkit.Extensions.svg?style=flat-square)](https://www.nuget.org/packages/SimpleToolkit.Extensions/) |
| SimpleToolkit.Attributes | [![NuGet version (SimpleToolkit.Attributes)](https://img.shields.io/nuget/v/SimpleToolkit.Attributes.svg?style=flat-square)](https://www.nuget.org/packages/SimpleToolkit.Attributes/) |
| SimpleToolkit.UI.Models | [![NuGet version (SimpleToolkit.UI.Models)](https://img.shields.io/nuget/v/SimpleToolkit.UI.Models.svg?style=flat-square)](https://www.nuget.org/packages/SimpleToolkit.UI.Models/) |
| SimpleToolkit.UI.WinUI.Behaviors | [![NuGet version (SimpleToolkit.UI.WinUI.Behaviors)](https://img.shields.io/nuget/v/SimpleToolkit.UI.WinUI.Behaviors.svg?style=flat-square)](https://www.nuget.org/packages/SimpleToolkit.UI.WinUI.Behaviors/) |
| SimpleToolkit.UI.WinUI.Converters | [![NuGet version (SimpleToolkit.UI.WinUI.Converters)](https://img.shields.io/nuget/v/SimpleToolkit.UI.WinUI.Converters.svg?style=flat-square)](https://www.nuget.org/packages/SimpleToolkit.UI.WinUI.Converters/) |
| SimpleToolkit.UI.WinUI.Controls | [![NuGet version (SimpleToolkit.UI.WinUI.Controls)](https://img.shields.io/nuget/v/SimpleToolkit.UI.WinUI.Controls.svg?style=flat-square)](https://www.nuget.org/packages/SimpleToolkit.UI.WinUI.Controls/) |
| SimpleToolkit.UI.WinUI.Helpers | [![NuGet version (SimpleToolkit.UI.WinUI.Helpers)](https://img.shields.io/nuget/v/SimpleToolkit.UI.WinUI.Helpers.svg?style=flat-square)](https://www.nuget.org/packages/SimpleToolkit.UI.WinUI.Helpers/) |
## Features
- **ObservableKeyValuePair** - observable version of KeyValuePair
- **ObservableDictionary** - observable version of Dictionary
-
## Installation and usage
You can download package from official NuGet registry or .nupkg file itself from Releases tab.
**CLI:**
```
dotnet add package SimpleToolkit.MVVM
```
**Package reference in .csproj file:**
```
<PackageReference Include="SimpleToolkit.MVVM" Version="<version>" />
```
## Attribution and contribution
This project is open source on MIT License, so you can just copy and upload again to your repository. But according to the license, you must include information about the original author. You can find license [here](https://repos.mateuszskoczek.com/SimpleToolkit/SimpleToolkit.MVVM/src/branch/main/LICENSE).
However, the preferred way to contribute would be to propose improvements in a pull request, through issues, or through other means of communication.
**Other sources:**
- Icon by [Icons8](icons8.com)