UWP (Universal Windows Platform) введение — быстрый старт

1. Xaml

1.1. Обзор XAML

  • XAML Overview
  • Используется в основном для создания визуальных элементов UI.
  • Базовый синтаксис Xaml основан на XML.
  • Объявление псевдонима пространства имен (namespace):
xmlns:controls="using:Common.Controls"
  • Использование классов, объявленных в пространстве имен:
<controls:MyControl />
  • Многократно используемые ресурсы (Resource),

    x:Key

<Style x:Key="TextBlock_Style" />
  • Имя (Name) элемента управления,

x:Name

Xaml:

<MyControl x:Name="myControl" />

C#:

private MyControl myControl;
  • Локализация

    x:Uid

<TextBlock x:Uid="sampleText" />

1.2. Самые базовые элементы управления (Control) – TextBlock, Button

<Page x:Class="MyPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StackPanel>
        <TextBlock Text="UWP Introduction" />
        <Button Content="UWP Introduction" Click="Button_Click" />
    </StackPanel>
</Page>

2. MVVM

MVVM详细介绍

View <=> ViewModel <=> Model

  • View должен по возможности содержать только содержимое для отображения UI, большая часть View выполняется на языке Xaml;
  • ViewModel должен по возможности не содержать бизнес-логику обработки, а выполнять действия путем вызова функций в Model;
  • Model должен по возможности содержать все бизнес-данные и логику, и по возможности не зависеть от View и ViewModel;

3. Взаимодействие ViewModel и Model

3.1. Управление данными Model из ViewModel

ViewModel:

public class ViewModel
{
    private Model model;
    private ChangeA()
    {
        this.model.A = "A";
    }
}

Model:

public class Model
{
    public string A { get; set; }
    public string B { get; set; }
}

3.2. Уведомление ViewModel от Model – event

ViewModel:

public class ViewModel
{
private Model model;
    private ChangeA()
    {
        r.BEventArgs += this.Handler;
    }
    private void Handler(object sender, EventArgs e)
    {
        AnyActions();
    }
}

Model:

public delegate void BChangedHandler(object sender, EventArgs e);

public class Model
{
    public string A { get; set; }
    private string _B;
    public string B
    {
        get { return this._B; }
        set
        {
            this._