Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Шаг 4. Редактирование

Читайте также:
  1. Команды панели «Редактирование» объекта
  2. Меню Edit — редактирование
  3. Построение и редактирование диаграмм
  4. Редактирование
  5. Редактирование
  6. Редактирование выделения
  7. Редактирование и копирование документа

Сделаем так, что для выделенной в списке книги будет открываться редактор. Изменим XAML-разметку формы: MainView.xaml

<Window x:Class="SampleMVVM.Views.MainView"
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
xmlns:c="clr-namespace:SampleMVVM.Commands"
Title="Main Window" Height="400" Width="350">

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ListView ItemsSource="{Binding BooksList}"
IsSynchronizedWithCurrentItem="True">
<ListView.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Bisque" BorderThickness="1"
Margin="10">
<StackPanel Margin="10">
<TextBlock Text="{Binding Title}"
FontWeight="Bold"/>
<TextBlock Text="{Binding Author}" />
<StackPanel Orientation="Horizontal">
<TextBlock Text="Осталось:" />
<TextBlock Text="{Binding Count}"
FontWeight="Bold" Margin="10,0"/>
<TextBlock Text="шт" />
</StackPanel>
</StackPanel>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

<ContentControl Grid.Column="1" Content="{Binding BooksList}">
<ContentControl.ContentTemplate>
<DataTemplate>
<Border BorderBrush="Bisque" BorderThickness="1"
Margin="10">
<StackPanel Margin="10">
<TextBlock Text="Название:"/>
<TextBox Text="{Binding Title,
UpdateSourceTrigger=PropertyChanged}"
Margin="0,0,0,10"/>

<TextBlock Text="Автор:"/>
<TextBox Text="{Binding Author,
UpdateSourceTrigger=PropertyChanged}"
Margin="0,0,0,10"/>
</StackPanel>
</Border>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
</Grid>
</Window>

Стоит обратить внимание на конструкцию UpdateSourceTrigger=PropertyChanged в строке биндинга. Это значит, что любое изменение, производимое в данном поле, будет немедленно отражаться на источнике. Это легко увидеть:


Рис. л. р. 5.4. Результат конструкции UpdateSourceTrigger=PropertyChanged

Если этого не написать, источник будет обновляться только по окончании редактирования (т.е. когда контрол будет терять фокус). Это может привести к следующей ошибке интерфейса: когда жмешь "Сохранить", сохраняется все, кроме только что измененного поля.


Дата добавления: 2015-08-13; просмотров: 101 | Нарушение авторских прав


Читайте в этой же книге: Если мы хотим получать извещения о нажатии любой кнопки в окне, достаточно просто вызвать метод | Триггер, который позволяет применять изменения, основанные на состоянии нескольких свойств. | Шаг 2. Использование нестандартных команд. | Класс представления (View). | Класс модели представления (View Model). | Реализация INotifyCollectionChanged. | Создание представления, определенного как шаблон данных. | Краткие итоги | В паттерне MVVM инкапсулирует логику представления и данные для отображения (англ. яз.). | Интерфейс, предоставляющий базовую поддержку валидации данных и сообщения об ошибках |
<== предыдущая страница | следующая страница ==>
Шаг 4. View| Шаг 5. Команды

mybiblioteka.su - 2015-2024 год. (0.006 сек.)