books-read.com
books-read.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:

    new Car { Id = 1, Color = "Blue", Make = "Chevy",

              PetName = "Kit", IsChanged = false });

  Cars.Add(

    new Car { Id = 2, Color = "Red", Make = "Ford",

              PetName = "Red Rider", IsChanged = false });

}

Далее переместите весь код, относящийся к командам, из файла отделенного кода окна в модель представления, заменив ссылку на переменную

_cars
ссылкой на
Cars
. Вот измененный код:

// Для краткости остальной код не показан

private void DeleteCar(Car car)

{

  Cars.Remove(car);

}

Обновление кода и разметки MainWindow

Из файла

MainWindow.xaml.cs
кода была удалена большая часть кода. Удалите строку, которая устанавливает
ItemsSource
для поля со списком, оставив только вызов
InitializeComponent()
. Код должен выглядеть примерно так:

public MainWindow()

{

    InitializeComponent();

}

Добавьте в начало файла следующий оператор

using
:

using WpfViewModel.ViewModels;

Создайте строго типизированное свойство для хранения экземпляра модели представления:

public MainWindowViewModel ViewModel { get; set; }

  = new MainWindowViewModel();

Добавьте свойство

DataContext
к объявлению окна в разметке XAML:

DataContext="{Binding ViewModel, RelativeSource={RelativeSource Self}}"

Обновление разметки элементов управления

Теперь, когда свойство

DataContext
для
Window
установлено в модель представления, потребуется обновить привязки элементов управления в разметке XAML. Начиная с поля со списком, модифицируйте разметку за счет добавления свойства
ItemsSource
:

<ComboBox Name="cboCars" Grid.Column="1" DisplayMemberPath="PetName" 

ItemsSource="{Binding Cars}" />

Прием работает, т.к. контекстом данных для

Window
является
MainWindowViewModel
, a
Cars
— открытое свойство модели представления. Вспомните, что конструкции привязки обходят дерево элементов до тех пор, пока не найдут контекст данных. Далее понадобится обновить привязки для элементов управления
Button
. Задача проста; поскольку привязки уже установлены на уровне окна, нужно лишь модифицировать конструкции привязки, чтобы они начинались со свойства
DataContext
:

<Button x:Name="btnAddCar" Content="Add Car"

  Margin="5,0,5,0" Padding="4, 2"

  Command=&quot;{Binding Path=<b>DataContext.AddCarCmd</b>,

  RelativeSource={RelativeSource Mode=FindAncestor,

                  AncestorType={x:Type Window}}}&quot;

  CommandParameter=&quot;{Binding ElementName=cboCars, Path=ItemsSource}&quot;/&gt;

&lt;Button x:Name=&quot;btnDeleteCar&quot; Content=&quot;Delete Car&quot;

  Margin=&quot;5,0,5,0&quot; Padding=&quot;4, 2&quot;

  Command=&quot;{Binding Path=<b>DataContext.DeleteCarCmd</b>,

  RelativeSource={RelativeSource Mode=FindAncestor,

  AncestorType={x:Type Window}}}&quot;

  CommandParameter=&quot;{Binding ElementName=cboCars, Path=SelectedItem}&quot; /&gt;

&lt;Button x:Name=&quot;btnChangeColor&quot; Content=&quot;Change Color&quot;

  Margin=&quot;5,0,5,0&quot; Padding=&quot;4, 2&quot;

  Command=&quot;{Binding Path=<b>DataContext.ChangeColorCmd</b>,

  RelativeSource={RelativeSource Mode=FindAncestor,

  AncestorType={x:Type Window}}}&quot;

  CommandParameter=&quot;{Binding ElementName=cboCars, Path=SelectedItem}&quot;/&gt;

Итоговые сведения о моделях представлений

Верите или нет, но вы только что закончили построение первого WPF-приложения MWM. Вы можете подумать: "Это не реалистичное приложение. Как насчет данных? Данные в примере жестко закодированы". И вы будете совершенно правы. Это не реальное приложение, а лишь демонстрация. Однако в ней легко оценить всю прелесть паттерна MWM. Представлению ничего не известно о том, откуда поступают данные; оно просто привязывается к свойству модели представления. Реализации модели представления можно менять, скажем, использовать версию с жестко закодированными данными во время тестирования и версию, обращающуюся к базе данных, в производственной среде.

Можно было бы обсудить еще немало вопросов, в том числе разнообразные инфраструктуры с открытым кодом, паттерн "Локатор модели представления" (View Model Locator) и множество разных мнений на предмет того, как лучше реализовывать паттерн MWM. В том и заключается достоинство паттернов проектирования программного обеспечения — обычно существует много правильных способов их реализации, и вам необходимо лишь отыскать стиль, который наилучшим образом подходит к имеющимся требованиям.

Обновление проекта AutoLot.Dal для MWM

Если вы хотите обновить проект

AutoLot.Dal
для MWM, то должны применить изменения, которые вносились в
Car
, ко всем сущностям в проекте
AutoLot.Dal.Models
, включая
BaseEntity
.

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор books-read.com


Прокомментировать
Подтвердите что вы не робот:*