UWP (Universal Windows Platform) введение — быстрый старт
Categories:
- 1. Xaml
- 2. MVVM
- 3. Взаимодействие ViewModel и Model
- 4. Взаимодействие View и ViewModel
- 5. (View и ViewModel) Реализация уведомлений – INotifyPropertyChanged
- 6. (View и ViewModel) Привязка ListView к источнику с уведомлениями – ObservableCollection
- 7. (View) Шаблон элемента (Item) ListView (DataTemplate | UserControl)
- 8. (ViewModel и Model) Преобразование данных – IValueConverter
- 9. (View) Изменение стиля (Style) Control
- 10. Использование Panel
- 11. (View) Адаптивный UI (Adaptive UI)
- 12. Принципы макета (Layout)
- 13. Локализация (Localization)
- 14. Соглашения об именовании
- 15. Примечание
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

- 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._