Главная » WPF

Триггеры

Добавлено Дата: 12 February, 2012 категория: WPF

В главе 5 мы впервые познакомились с триггерами,  когда воспользовались ими  в сочетании  с шаблоном  элемента  управления для  декларативного за пуска анимации.  Триггер может сработать по одному из трех условий: (1) из менение  состояния свойства  отображения (Trigger);  (2)  изменение  состоя ние свойства данных (DataTrigger); (3) событие (EventTrigger). Все три типа триггеров при срабатывании запускают некоторую последовательность действий.  Существует  также два типа триггеров  для наборов: MultiTrigger и MultiDataTrigger.

Читать »

Команды и привязка к данным

Добавлено Дата: 11 February, 2012 категория: WPF

Одна из наиболее интересных и мощных возможностей команд – это интегра ция  с привязкой к данным.  Поскольку у элементов  есть свойства  Command  и CommandParameter, их можно привязать к данным. А, значит, именно от данных будет зависеть  происходящее в программе.  В главе 6 мы говорили  о пользова тельских интерфейсах, управляемых данными. Так вот, команды позволяют  реа лизовать  и логику, управляемую данными.

Читать »

Команды

Добавлено Дата: 11 February, 2012 категория: WPF

Большинство событий  в WPF связаны  с деталями  реализации конкретных эле ментов управления: изменился выбор, произошел щелчок, передвинулась мышь и т.д. События хороши, когда нужно выполнить некоторый код в ответ на получение изве щения от элемента управления, но часто бывает нужен более абстрактный подход.

Читать »

События дополнительный механизм маршрутизации WPF

Добавлено Дата: 11 February, 2012 категория: WPF

В WPF события ведут себя точно так же, как в любой другой библиотеке клас

сов, входящей в состав .NET. Каждый объект предоставляет набор событий, на ко

торые можно подписаться, определив соответствующий делегат. Мы уже отмечали, что в WPF имеется дополнительный механизм  маршрутизации событий, который позволяет  им распространяться вверх по дереву элементов.  Существует  три вида маршрутизации событий: прямая,  всплытие  (bubbling) и туннелирование (tunnel ing). Прямые события – это простые события, возникающие от одиночного источ ника, они почти идентичны  стандартным  событиям .NET с тем отличием, что реги стрируются  в системе маршрутизации событий  WPF1. Некоторые средства  плат формы (например, триггеры)  требуют, чтобы событие было явно зарегистрировано.

Читать »

Декларативные действия

Добавлено Дата: 11 February, 2012 категория: WPF

Мы видим, что с появлением команд и слабой связи WPF движется в направ

лении модели, когда программа просто объявляет о своих пожеланиях (например,

«я хочу, чтобы окно закрылось, когда вы отдадите эту команду») вместо реализа

ции (например, «вызвать метод Window.Close() при нажатии этой кнопки»).

Читать »

Принципиальные основы действий

Добавлено Дата: 11 February, 2012 категория: WPF

В том, что касается действий, WPF опирается на три принципа, которые на са мом деле служат  естественным  продолжением тех, что мы уже рассматривали: композиция элементов,  слабая связь и декларативное описание.  Для того чтобы действия  были совместимы  со способом построения  дерева отображения, в кото ром одни элементы включают в себя другие, композиция является непременным условием.  Тот факт,  что элемент  управления может радикально  изменить  свой внешний  облик, порождает  сложности  в случае, когда источник  события  и код его обработки  тесно связаны  между  собой; поэтому  механизм  ослабления этой связи  также необходим.  И, наконец,  поскольку  декларативная модель програм мирования пронизывает всю систему, WPF обязана поддерживать и декларатив ную обработку действий тоже.

Читать »

Отображение, управляемое данными

Добавлено Дата: 10 February, 2012 категория: WPF

В большинстве приложений автор конструирует простой пользовательский ин

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

вания.  Но WPF позволяет  и обратить  это привычное  отношение:  данные можно сделать первичными, а интерфейс вторичным. В результате удается построить раз витую визуализацию данных, независимую  от способа использования. Ключом к этой модели служат три класса: ContentControl, ItemsControl и DataTemplate.

Читать »

Фильтрация, сортировка и группировка

Добавлено Дата: 10 February, 2012 категория: WPF

Фильтрация – самая простая из всех функций представления; мы определяем об ратный вызов в виде делегата, который решает, надо ли показывать  элемент набора. Как всегда, можно воспользоваться представлением по умолчанию, модифицировать его или создать новое. Чтобы стало понятно, как обрабатываются элементы, возьмем два списка: один с подразумеваемым представлением (немодифицированным), а другой – со специальным представлением, в котором реализованы некие хитрости.

Читать »

Управление текущим элементом

Добавлено Дата: 10 February, 2012 категория: WPF

Самый  важный  аспект представления набора – это отслеживание текущего элемента в списке. При любой привязке к списку система по умолчанию  созда ет представление набора. Для того чтобы понять, как работает этот механизм, проще всего воспользоваться свойством  IsSynchronizedWithCurrentItem спис кового  элемента  управления. Оно  синхронизирует выбранный  в списке  эле мент с текущим элементом представления. Обычно мы привязываем набор к свойству, тип значения которого –набор (например, к свойству ItemsSource). Можно  привязать весь набор, индексированный элемент  набора или свойство текущего элемента. Мы уже видели привязку всего набора и индексированного элемента. А для того чтобы привязать свойство текущего элемента, достаточно указать его имя. Отсутствие квадратных  скобок означает, что привязывается текущий элемент.

Читать »

Представления наборов

Добавлено Дата: 10 February, 2012 категория: WPF

До сих пор речь шла о трех объектах, принимающих участие в связывании: ис точник данных, привязка и целевой элемент. Но в случае привязки к списку есть и четвертый  игрок: представление набора (collection view). Оно отвечает за отс леживание текущего элемента, а также за фильтрацию, сортировку  и группиров ку данных. Можно  считать, что представление набора – это тонкая  обертка вок руг данных, которая позволяет  взглянуть на одни и те же данные по разному. Для небольших списков, которые только и встречаются в этой книге, это не столь важ но, но если набор данных велик, то очень важно не загружать  его в память более одного раза.

Читать »

Приложения WPF

Добавлено Дата: 9 February, 2012 категория: WPF

У каждого из нас есть собственное  определение  того, что такое приложение; Мое любимое звучит так: «программа, основное назначение которой – взаимо# действие с человеком». Платформа Windows Presentation Foundation вся посвя# щена представлению информации в удобном для человека виде. Неудивительно поэтому, что я считаю правильным начать углубленное ее исследование  именно с уровня приложений.

Читать »

Иерархическое связывание

Добавлено Дата: 9 February, 2012 категория: WPF

Все примеры,  которые  мы рассматривали до сих пор, были плоскими:  список клиентов или информационных носителей. Но часто данные бывают организованы иерархически, как, например, XML документ  общего вида или файловая система. Поскольку WPF поддерживает композицию элементов, то первое, что приходит  в голову, – воспользоваться этой композицией для построения  дерева элементов.

Читать »

Шаблоны данных используемые в WPF

Добавлено Дата: 9 February, 2012 категория: WPF

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

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

Читать »

Привязка к XML

Добавлено Дата: 9 February, 2012 категория: WPF

Поддержка  XML в WPF основана на объектной модели документа (DOM), реа лизованной в пространстве имен System.Xml. Мы можем привязаться к части любо го XML документа,  используя объекты XmlDocument, XmlElement или XmlNode в качестве источника.  Свойства  можно привязывать только к атрибуту  или к содер жимому элемента; списки допускают привязку к любому набору элементов.

Читать »

Редактирование WPF

Добавлено Дата: 9 February, 2012 категория: WPF

Чтобы редактировать значения, должен быть какой то способ узнать, что зна чение изменилось. Помимо разрешения изменять  свойство, существует несколь ко интерфейсов, которые позволяют объекту или списку рассылать извещения об изменении.  Если источник  данных уведомляет  об изменении,  то система связы вания  сможет  отреагировать на  модификацию данных.  Чтобы  наделить   наш класс Person способностью извещать об изменениях, у нас есть три возможности: (1)  реализовать интерфейс INotifyPropertyChanged, (2)  добавить события, с по мощью которых мы будем сообщать об изменении,  (3)  создать свойства,  произ водные от класса DependencyProperty.

Читать »