ClinicalOffice.MvvmTools.WPF.Core

A library to enable direct binding of events in your views and methods in the view models, provide easy way of creating commands and commands collection, and also create data preview of your view models at design time.


Keywords
MVVM, Tools, XAML, WPF, Xamarin, Forms, XamarinForms, XForms, Command, Commands, Collection, CommandCollection, CommandsCollection, CrossPlatform, Caliburn, Catel, MvvmCross, MvvmLight, Mvvm-Light, EventsBinding, Events, caliburn-micro, csharp, data-preview, design-time, mvvm-architecture, mvvm-framework, xamarin-forms
License
MIT
Install
Install-Package ClinicalOffice.MvvmTools.WPF.Core -Version 1.3.0

Documentation

A tiny library to help cross-platform MVVM developer to be more productive by adding some shared and platform specific features:

1.Shared Library:

To be installed on any .NET Standard 2.0 compatible project, usually where you define your view models. The main usage for this library is to help developer in creating commands in an easy way for the view models. It has also some basic classes to be used in the platform specified libraries (like command collection and basic implementation of event binding). You can create commands in a simple way:

using System;
using System.Windows.Input;
using MvvmTools;

namespace Sample
{
    public class ViewModel
    {
        public ViewModel()
        {
            ShowModelsCountCommand = Command.Create(ShowModelsCount);
        }
        public List<Model> Models { get; set; }

        public void ShowModelsCount() => ShowMessage(Models?.Count);
        public ICommand ShowModelsCountCommand { get; private set; }
    }
}

2.Platform Specific Library:

The first part of this library enables direct binding between events in your views and methods in the view models directly from XAML code Like:

<TextBox tools:Events.Bindings="LostFocus=Validate,GotFocus=Clear"/>

This will create two events bindings.... one will call method Validate on LostFocus event, and one will call Clear when event GotFocus is fired.... You can also pass single parameter to the method as Following:

<TextBox tools:Events.Bindings="LostFocus=Validate(!context),GotFocus=Clear(!sender)"/>

You can also use commands in the same way as methods and bind them to any event:

<TextBox tools:Events.Bindings="LostFocus=ValidateCommand(!context),GotFocus=ClearCommand(!sender)"/>

The Second part will enable a quick preview of you view models and its data inside your designer to give a better way of previewing your interface at design time. You can write the following in your WPF application (the magic happens in the line d:DataContext="{tools:DesignInstance Type=vm:ViewModel}"):

<Window x:Class="MvvmTools.Sample.WPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:MvvmTools.Sample.WPF"
        xmlns:tools="clr-namespace:MvvmTools.WPF;assembly=MvvmTools.WPF"
        xmlns:vm="clr-namespace:MvvmTools.Sample;assembly=MvvmTools.Sample"
        mc:Ignorable="d"
        d:DataContext="{tools:DesignInstance Type=vm:ViewModel}"
        Title="MainWindow">
</Window>

In your xamarin forms (also pay attention to BindingContext="{tools:DesignInstance Type=vm:ViewModel}"):

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:MvvmTools.Sample.XForms"
             xmlns:vm="clr-namespace:MvvmTools.Sample;assembly=MvvmTools.Sample"
             xmlns:tools="clr-namespace:MvvmTools.XForms;assembly=MvvmTools.XForms"
             BindingContext="{tools:DesignInstance Type=vm:ViewModel}"
             x:Class="MvvmTools.Sample.XForms.MainPage">
</ContentPage>

** PLEASE READ THE WIKI FOR MORE INFORMATIONS **