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

Улучшенная поддержка шаблона MVVM

Читайте также:
  1. I. Неразборная улучшенная колода
  2. II. Полуразборная улучшенная колода
  3. III. Разборная улучшенная колода
  4. Int 09h, Int16 h — поддержка клавиатуры
  5. Int 14h — поддержка СОМ-портов
  6. Int 1Ah и Int 15h—поддержка таймеров
  7. АМЕРИКАНСКАЯ ПОДДЕРЖКА СОВЕТОВ ВО ВРЕМЯ ВОЙНЫ

Данная поддержка состоит в расширении перечислимого типа UpdateSourceTrigger значением PropertyChanged. Данное значение влияет на обновление источника данных, происходящее при обновлении цели (элемента, куда данные выгружаются). Ранее этот тип поддерживал лишь два значения, это LostFocus и Explicit. Иными словами, если Вы связываете данные с элементом управления TextBox, то в случае двунаправленного связывания, при изменении элемента TextBox, источник мог быть обновлен лишь при потере фокуса или явным образом. Значение PropertyChanged позволяет реагировать на любые изменения в текстовом поле «на лету». При этом нет необходимости обрабатывать нажатия клавиш и т.д. Вот пример кода:

1: <UserControl x:Class="SilverlightApplication1.MainPage"
2: xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
3: xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
4: xmlns:d=http://schemas.microsoft.com/expression/blend/2008
5: xmlns:mc=http://schemas.openxmlformats.org/markup-ompatibility/2006
6: Loaded="UserControl_Loaded"
7: mc:Ignorable="d"
8: d:DesignHeight="300" d:DesignWidth="400">
9:
10: <Grid x:Name="LayoutRoot" Background="White">
11: <Grid.Resources>
12: <Style TargetType="TextBox">
13: <Setter Property="Background" Value="AliceBlue"/>
14: <Setter Property="Width" Value="200"/>
15: <Setter Property="Margin" Value="5"/>
16: </Style>
17: <Style TargetType="TextBlock">
18: <Setter Property="Margin" Value="5"/>
19: </Style>
20: </Grid.Resources>
21: <Grid.RowDefinitions>
22: <RowDefinition Height="Auto"></RowDefinition>
23: <RowDefinition Height="Auto"></RowDefinition>
24: </Grid.RowDefinitions>
25: <Grid.ColumnDefinitions>
26: <ColumnDefinition Width="Auto"></ColumnDefinition>
27: <ColumnDefinition Width="Auto"></ColumnDefinition>
28: </Grid.ColumnDefinitions>
29:
30: <TextBlock Text="First Name:" Grid.Column="0" Grid.Row="0"/>
31: <TextBox Grid.Row="0" Grid.Column="1" Text=
32: "{Binding FirstName, UpdateSourceTrigger=PropertyChanged,
Mode=TwoWay}">
33: </TextBox>
34: <TextBlock Text="Your First Name:" Grid.Column="0"
Grid.Row="1"/>
35: <TextBlock Text="{Binding FirstName}" Grid.Column="1"
Grid.Row="1"/ >
36:
37: </Grid>
38: </UserControl>

Ну и код модифицированного класса (чтобы работало связывание в двух направлениях):

1: public class Person: INotifyPropertyChanged
2: {
3: public string firstName;
4:
5: public string FirstName {
6: get { return firstName; }
7: set {
8: firstName = value;
9: OnPropertyChanged(new
PropertyChangedEventArgs("FirstName"));
10: }
11: }
12:
13: public event PropertyChangedEventHandler PropertyChanged;
14:
15: public void OnPropertyChanged(PropertyChangedEventArgs e)
16: {
17: if (PropertyChanged!= null)
18: PropertyChanged(this, e);
19: }
20:
21: }

В результате, если вводить текст в поле редактирования, он тут же будет отображаться и в поле ниже. Это не всегда хорошо, так как если текст проходит валидацию, то в процессе набора нет необходимости требовать его корректность, но иногда такая возможность может быть полезна.


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


Читайте в этой же книге: Задача 3. | Задача 6. | Шаг 1. Применение стиля в XAML документе | Шаг 2. Динамическое применение стилей в коде приложения | Поддержка множества целевых платформ | Built in Types | Ключевые термины | Хронология Silverlight | Повышение полномочий для приложений в браузере | Работа с текстом |
<== предыдущая страница | следующая страница ==>
Отладка при связывании с данными| Неявные шаблоны

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