Windows dialog что это
Использование общих диалоговых окон
В этом разделе рассматриваются задачи, вызывающие общие диалоговые окна:
Выбор цвета
В этом примере используется структура чусеколор для инициализации диалогового окна следующим образом:
Выбор шрифта
Открытие файла
начиная с Windows Vista, общее диалоговое окно файла заменено диалоговым окном общих элементов при использовании для открытия файла. Вместо общепринятого API-интерфейса диалогового окна рекомендуется использовать интерфейс API общего элемента. Дополнительные сведения см. в разделе диалоговое окно общих элементов.
В этом примере элемент лпстрфилтер является указателем на буфер, указывающий два фильтра имен файлов, которые пользователь может выбрать для ограничения отображаемых имен файлов. Буфер содержит массив строк, заканчивающийся двойным нулем, в котором каждая пара строк задает фильтр. Элемент нфилтериндекс указывает, что первый шаблон используется при создании диалогового окна.
В языке программирования C строка, заключенная в кавычки, завершается нулем.
Отображение диалогового окна «Печать»
Использование страницы свойств печати
После завершения операции печати пример кода освобождает буферы DEVMODE, DEVNAMESи принтпажеранже и вызывает функцию делетедк для удаления контекста устройства.
Настройка печатной страницы
В следующем примере также активируется процедура-обработчик пажепаинсук для настройки рисования содержимого образца страницы.
Поиск текста
В этом разделе описывается пример кода, который отображает диалоговое окно поиска и управляет им, чтобы пользователь мог указать параметры операции поиска. Диалоговое окно отправляет сообщения в процедуру окна, чтобы можно было выполнить операцию поиска.
Диалоговые окна и всплывающие элементы
Если у вас установлено приложение XAML Controls Gallery, щелкните здесь, чтобы открыть его и увидеть ContentDialog или Flyout в действии.
Диалоговые окна и всплывающие элементы используются для временного отображения элементов пользовательского интерфейса, если происходит нечто, требующее уведомления, подтверждения или дополнительных сведений от пользователя.
Диалоги
Диалоговые окна — это модальные наложения пользовательского интерфейса, которые предоставляют контекстную информацию о приложении. Диалоговые окна блокируют взаимодействие с окном приложения, пока пользователь явно не закроет окно. Они часто требуют от пользователя совершения каких-либо действий.
Всплывающие элементы
Всплывающий элемент — это облегченное всплывающее контекстно-зависимое окно, отображающее элемент пользовательского интерфейса в зависимости от действий пользователя. Он включает логику расположения и размеров и может использоваться для отображения дополнительного элемента управления или отображения дополнительных сведений об элементе.
В отличие от диалогового окна, всплывающий элемент можно быстро закрыть нажатием или щелчком за его пределами, нажатием клавиши Escape или кнопки «Назад», изменением размера окна приложения или ориентации устройства.
Выбор правильного элемента управления
Диалоговые окна и всплывающие элементы позволяют пользователям быть в курсе важной информации, но также мешают взаимодействию с пользователем. Так как диалоговые окна модальны (приводят к блокировке), они прерывают работу пользователей и мешают им выполнять дальнейшие действия, пока не произойдет взаимодействие с диалоговым окном. Всплывающие элементы в меньшей степени мешают взаимодействию с пользователем, но отображение слишком большого числа всплывающих элементов может отвлекать.
Определив, собираетесь ли вы использовать диалоговое окно или всплывающий элемент, необходимо выбрать один из этих вариантов.
Учитывая то, что, в отличие от всплывающих элементов, диалоговые окна блокируют взаимодействие, последние следует использовать в тех случаях, когда пользователь должен уделить все внимание определенной информации или ответить на вопрос. С другой стороны, всплывающие элементы можно использовать для привлечения внимания к определенной информации, которую пользователь вполне может проигнорировать.
Как избавиться от ненужных диалоговых окон и всплывающих элементов
Учитывайте важность информации, которую требуется отобразить: важна ли она настолько, чтобы прерывать пользователя? Также учтите частоту отображения информации. Если диалоговое окно или уведомление отображается каждые несколько минут, возможно, следует выделить для этой информации место в основном пользовательском интерфейсе. Возьмем, к примеру, клиент чата. Вместо того чтобы отображать всплывающий элемент каждый раз, когда друг выполняет вход, можно отображать список друзей, находящихся на данный момент в сети, и выделять друзей, выполняющих вход.
Диалоговые окна часто используются для подтверждения действия (например, удаления файла) перед его выполнением. Если ожидается, что пользователь будет часто выполнять определенное действие, вы можете предоставить пользователю возможность отменить ошибочное действие, чем запрашивать его подтверждение каждый раз.
Открытие и сохранение диалоговых окон
Функция GetOpenFilename показана в файле, который используется в качестве примера.
[начиная с Windows Vista общие диалоговые окна » открыть » и » сохранить как » были заменены диалоговым окном общих элементов. Рекомендуется использовать API-интерфейс общего элемента, а не эти диалоговые окна из библиотеки общих диалоговых окон.]
в диалоговых окнах » открыть » и » сохранить как » обозревателя представлены функции пользовательского интерфейса, аналогичные проводнику Windows. Однако система по-прежнему поддерживает диалоговые окна открытия и сохранения старого стиля для приложений, которые должны быть совместимы с пользовательским интерфейсом старого стиля.
В дополнение к различиям в внешнем виде диалоговые окна в стиле обозревателя и старого стиля отличаются использованием пользовательских шаблонов и процедур подключения для настройки диалоговых окон. Однако диалоговые окна в стиле обозревателя и старого стиля имеют одинаковое поведение для большинства основных операций, таких как указание фильтра имен файлов, проверка вводимых пользователем данных и получение имени файла, указанного пользователем. Дополнительные сведения о диалоговых окнах «Обозреватель-стиль» и «старый стиль» см. в разделе Настройка диалоговых окон «Открыть» и «сохранить как».
На следующем рисунке показано типичное диалоговое окно « Открыть в стиле обозревателя».
На следующем рисунке показано типичное диалоговое окно « Сохранение в стиле обозревателя».
В этом разделе рассматриваются следующие темы.
Имена файлов и каталоги
Сведения в этом разделе относятся к диалоговым окнам Открыть и Сохранить как в стиле обозревателя, так и в старом стиле.
Перед вызовом функций GetOpenFilename или жетсавефиленаме элемент указанный структуры OpenFileName должен указывать на буфер для получения имени файла. Элемент нмаксфиле должен указывать размер буфера указанный в символах. Для функции ANSI это число байтов, но для функции Юникода это число символов.
Стиль диалогового окна | Описание |
---|---|
Диалоговые окна в стиле обозревателя | Строки имени файла и каталога с разделителями null разделяются символом null после последнего имени файла. Этот формат позволяет диалоговым окнам в стиле обозревателя возвращать длинные имена файлов, содержащие пробелы. |
Диалоговые окна старого стиля | Строки имен файлов и каталогов разделяются пробелами. Для имен файлов с пробелами функция использует короткие имена файлов. |
Функцию FindFirstFile можно использовать для преобразования между длинными и короткими именами файлов.
Если указать ОФН _ алловмултиселект и пользователь выбрал только один файл, то в строке указанный не будет разделителя между путем и именем файла.
Фильтры
Сведения в этом разделе относятся к диалоговым окнам «обозреватель-стиль» и « старый стиль» и « Сохранить как ».
Можно указать фильтры имен файлов, чтобы помочь пользователю в ограничении имен файлов, отображаемых в диалоговом окне. Фильтр имен файлов состоит из пары строк, завершающихся нулем, описания и шаблона, Объединенных в другой. В диалоговом окне отображается описание, позволяющее пользователю выбрать используемый фильтр. и использует шаблон для выбора файлов для вывода.
Строка шаблона может представлять собой сочетание допустимых символов имени файла и звездочки ( * ). Звездочка — это подстановочный знак, который представляет любое сочетание допустимых символов имени файла. В диалоговом окне отображаются только те файлы, которые соответствуют шаблону. Чтобы указать несколько шаблонов для одного описания, необходимо использовать точку с запятой (;) для разделения шаблонов. Обратите внимание, что пробелы в строке шаблона могут привести к непредвиденным результатам.
В следующем фрагменте кода указываются два фильтра. Фильтр с описанием «источник» имеет два шаблона. Если пользователь выбирает этот фильтр, в диалоговом окне отображаются только файлы с. C и. Расширения CXX. Обратите внимание, что в языке программирования C строка, заключенная в двойные кавычки, завершается нулем.
Элемент нфилтериндекс структуры OpenFileName задает индекс, который указывает, какой фильтр используется в первоначальном диалоговом окне. Первый фильтр в буфере имеет индекс 1, второй 2 и т. д. Если пользователь изменяет фильтр при использовании диалогового окна, для элемента нфилтериндекс задается индекс выбранного фильтра в поле Return.
Можно создать настраиваемый фильтр, задав для элемента лпстркустомфилтер адрес буфера, содержащего один фильтр, и установив для элемента нмакскустфилтер размер буфера в символах или байтах. В диалоговом окне Пользовательский фильтр всегда помещается в начало списка фильтров, а в случае возврата всегда обновляет часть шаблона фильтра с помощью шаблона из фильтра, выбранного пользователем.
сообщение уведомления CDN _ инклудеитем предоставляет другой способ фильтрации имен, отображаемых в диалоговом окне. Чтобы использовать это сообщение, укажите процедуру-обработчик офнхукпрок и укажите флаг ОФН _ енаблеинклуденотифи в структуре OpenFileName при создании этого диалогового окна. каждый раз, когда пользователь открывает папку, диалоговое окно отправляет CDN уведомление _ в процедуру обработчика для каждого элемента во вновь открытой папке. Возвращаемое значение процедуры-обработчика указывает, должно ли диалоговое окно отображать элемент в списке элементов папки.
Проверка файлов и каталогов
Если не указано иное, сведения в этом разделе применяются к диалоговым окнам Открыть и Сохранить как в стиле обозревателя, так и в старом стиле.
Диалоговое окно автоматически проверяет имена файлов, введенные пользователем, чтобы гарантировать, что имена содержат только допустимые символы. Чтобы переопределить проверку символа имени файла, установите флаг ОФН. _
Настройка диалогового окна «открыть и сохранить как»
Диалоговое окно Открыть или Сохранить как можно настроить, предоставив процедуру-обработчик, пользовательский шаблон или и то, и другое. Однако версии диалоговых окон в стиле обозревателя и старого стиля отличаются использованием пользовательских шаблонов и процедур-обработчиков.
Сведения о настройке диалогового окна в стиле обозревателя см. в разделе процедуры-обработчикив стиле обозревателя, пользовательские шаблоны в стиле обозревателяи идентификаторы элементов управления в стиле обозревателя. Сведения о настройке диалогового окна старого стиля см. в разделе Настройка диалоговых окон Old-Style.
В следующей таблице приведены различия между двумя стилями.
Настройка | Описание |
---|---|
Процедура обработчика в стиле обозревателя | Процедура-обработчик получает сообщения уведомления, отправленные из общего диалогового окна, и сообщения для любых дополнительных элементов управления, определенных с помощью шаблона дочернего диалогового окна. Процедура-обработчик не получает сообщения для стандартных элементов управления диалогового окна по умолчанию. |
Пользовательский шаблон в стиле обозревателя | Система использует пользовательский шаблон для создания дочернего диалогового окна. Шаблон может определять дополнительные элементы управления, а также указывать расположение кластера стандартных элементов управления. Пользовательский шаблон не заменяет шаблон по умолчанию. |
Процедура обработчика старого стиля | Процедура-обработчик получает все сообщения, отправленные в диалоговое окно, включая сообщения для стандартных элементов управления и пользовательских элементов управления. Процедура-ловушка также получает зарегистрированные сообщения, отправленные из общего диалогового окна. |
Пользовательский шаблон старого стиля | Пользовательский шаблон заменяет шаблон по умолчанию. Создайте пользовательский шаблон, изменив шаблон по умолчанию, указанный в файле FileOpen. DLG. |
Чтобы скрыть возможности диалоговых окон « Открыть » и « Сохранить как » в стиле обозревателя, администратор может задать значения в следующей таблице в этом подразделе:
Имя значения | Значение | Значение |
---|---|---|
ноплацесбар | 1 | Скрывает панель мест. |
нофилемру | 1 | Скрывает список недавно использованных (MRU) списков. |
нобаккбуттон | 1 | Скрывает кнопку » назад «. |
Содержимое панели мест определяется содержимым следующего подраздела:
Тип значения | Значение |
---|---|
REG _ DWORD | Значение CSID, идентифицирующее папку. Список значений CSID см. в разделе значения CSid. |
Reg _ SZ или reg _ expand _ SZ | Строка, завершающаяся нулем и указывающая допустимый путь. |
Explorer-Style процедуры-обработчики
Можно настроить диалоговое окно Открытие или Сохранение в стиле обозревателя, предоставив процедуру-обработчик, пользовательский шаблон или и то, и другое. При предоставлении процедуры-обработчика для диалогового окна в стиле обозревателя система создает диалоговое окно, которое является дочерним по отношению к диалоговому окну по умолчанию. Процедура-обработчик выступает в качестве процедуры диалогового окна для дочернего диалогового окна. Это дочернее диалоговое окно основано на пользовательском шаблоне или в шаблоне по умолчанию, если он не указан. Дополнительные сведения см. в разделе пользовательские шаблоны в стиле обозревателя.
При открытии диалогового окна процедура обработчика в стиле обозревателя получает разнообразные сообщения. следующие основные параметры.
Кроме того, существует набор сообщений, которые можно отправить в диалоговое окно в стиле обозревателя для получения сведений или управления поведением и внешним видом диалогового окна.
Чтобы получить сведения о состоянии диалогового окна или управлении поведением и внешним видом диалогового окна, процедура-обработчик может отправить в диалоговое окно следующие сообщения.
Сообщение | Значение |
---|---|
CDM. _ FilePath | Извлекает путь и имя выбранного файла. |
CDM _ жетфолдеридлист | Извлекает список идентификаторов элементов, соответствующий текущей папке, открытой в этом диалоговом окне. Дополнительные сведения о списках идентификаторов элементов см. в разделе Введение в пространство имен оболочки. |
CDM _ GETFOLDERPATH | Возвращает путь к текущей папке или каталогу для диалогового окна. |
CDMая _ Спецификация | Извлекает имя файла (не включая путь) файла, выбранного в данный момент в диалоговом окне. |
CDM _ хидеконтрол | Скрывает указанный элемент управления. |
CDM _ сетконтролтекст | Задает текст в указанном элементе управления. |
CDM _ сетдефекст | Задает расширение имени файла по умолчанию для диалогового окна. |
Explorer-Style пользовательских шаблонов
Процедура диалогового окна по умолчанию обрабатывает сообщения для всех элементов управления в диалоговом окне по умолчанию, но процедура-обработчик принимает сообщения уведомления для действий пользователя с этими элементами управления, как описано в разделе процедуры обработчика в стиле обозревателя.
Идентификаторы элементов управления Explorer-Style
пакет средств разработки Windows Software Development Kit (SDK) предоставляет шаблон диалогового окна по умолчанию для диалоговых окон старого стиля, но не включает шаблон по умолчанию для диалоговых окон в стиле обозревателя. Это связано с тем, что диалоговые окна в стиле обозревателя позволяют добавлять собственные элементы управления, но не поддерживают изменение шаблона для стандартных элементов управления. Однако в некоторых случаях может потребоваться знать идентификаторы элементов управления, используемые в шаблонах по умолчанию. Например, для сообщений CDM _ Хидеконтрол и CDM _ сетконтролтекст требуется идентификатор элемента управления.
В следующей таблице показаны идентификаторы стандартных элементов управления в диалоговых окнах Открытие и Сохранение в стиле обозревателя. Идентификаторы — это константы, определенные в Длгс. h и Winuser. h.
Идентификатор элемента управления | Описание элемента управления |
---|---|
chx1 | Флажок только для чтения |
cmb1 | Раскрывающееся поле со списком, в котором отображается список фильтров типов файлов |
stc2 | Метка для поля со списком cmb1 |
cmb2 | Раскрывающийся список, отображающий текущий диск или папку, который позволяет пользователю выбрать диск или папку для открытия |
stc4 | Метка для поля со списком cmb2 |
cmb13 | Раскрывающийся список, отображающий имя текущего файла, позволяет пользователю ввести имя открываемого файла и выбрать файл, который был открыт или сохранен недавно. Это предназначено для ранее совместимых с обозревателем приложений без обработчика или шаблона диалогового окна. Сравните с edt1. |
edt1 | Элемент управления «поле ввода», который отображает имя текущего файла, или позволяет пользователю ввести имя открываемого файла. Сравните с cmb13. |
stc3 | Метка для поля со списком cmb13 и элемента управления Edit edt1 |
lst1 | Список, отображающий содержимое текущего диска или папки |
stc1 | Метка для списка lst1 |
IDOK | Кнопка « ОК » (кнопка «Отправить») |
IDCANCEL | Кнопка «Отмена» (кнопка «Отправить») |
пшхелп | Кнопка « Справка » (кнопка «Отправить») |
Настройка диалоговых окон Old-Style
Общие сведения о диалоговых окнах
Изолированные приложения обычно имеют главное окно, в котором отображаются основные данные, по которым приложение работает, и предоставляет функциональные возможности для обработки этих данных с помощью пользовательский интерфейс таких механизмов, как строки меню, панели инструментов и строки состояния. Нетривиальное приложение может также отображать дополнительные окна для следующих целей:
отображения определенных сведений для пользователей;
сбора сведений от пользователей;
сбора и отображения сведений.
Эти типы окон называются диалоговыми окнами, и существует два типа: модальные и немодальные.
Windows Presentation Foundation (WPF) позволяет создавать несколько типов диалоговых окон, включая окна сообщений, общие диалоговые окна и пользовательские диалоговые окна. В этом разделе обсуждаются все, а в образце диалогового окна приведены соответствующие примеры.
Окна сообщений
Окно сообщения является диалоговым, которое можно использовать для вывода текстовой информации и разрешения пользователям принимать решения с помощью кнопок. На следующем рисунке показано окно сообщения, в котором отображается текстовая информация, задается вопрос и предоставляются три кнопки для ответа на этот вопрос.
Чтобы создать окно сообщения, используйте MessageBox класс. MessageBox позволяет настроить текст, заголовок, значок и кнопки в окне сообщения, используя код, подобный приведенному ниже.
Чтобы отобразить окно сообщения, вызовите static Show метод, как показано в следующем коде.
Когда коду, который показывает окно сообщения, нужно определить и обработать решение пользователя (какая кнопка была нажата), он может проверить результат окна сообщения, как показано в следующем коде.
Хотя MessageBox может предложить простое взаимодействие с пользователем диалогового окна, преимущество использования MessageBox — это единственный тип окна, который может быть отображен приложениями, выполняемыми в песочнице безопасности частичного доверия (см. раздел Безопасность), например в приложениях браузера XAML (XBAP).
Большинство диалоговых окон отображают и собирают более сложные данные, чем результат окна сообщения, в том числе текст, выбранные варианты (флажки), взаимоисключающий выбор (переключатели) и списки выбора (списки, поля со списком, поля с раскрывающимся списком). для этого Windows Presentation Foundation (WPF) предоставляет несколько общих диалоговых окон и позволяет создавать собственные диалоговые окна, хотя использование либо ограничено приложениями, работающими с полным доверием.
Общие диалоговые окна
в Windows реализовано множество многократно используемых диалоговых окон, которые являются общими для всех приложений, включая диалоговые окна для открытия файлов, сохранения файлов и печати. Поскольку эти диалоговые окна реализованы операционной системой, они могут совместно использоваться всеми приложениями, работающими в операционной системе, что помогает поддерживать единообразие пользовательского интерфейса; если пользователи знакомы с диалоговым окном, предоставляемым операционной системой в одном приложении, им не нужно учиться пользоваться этим диалоговым окном в других приложениях. Поскольку эти диалоговые окна доступны для всех приложений, и они помогают обеспечить единообразное взаимодействие с пользователем, они называются общими диалоговыми окнами.
Windows Presentation Foundation (WPF) инкапсулирует общие диалоговые окна открытия файла, сохранения файлов и печати и предоставляет их в качестве управляемых классов для использования в автономных приложениях. В этом разделе приводится краткий обзор каждого типа диалоговых окон.
Диалоговое окно открытия файла
Диалоговое окно открытия файлов, показанное на следующем рисунке, используется функциональностью открытия файла для получения имени открываемого файла.
Общее диалоговое окно открытия файла реализуется как OpenFileDialog класс и находится в Microsoft.Win32 пространстве имен. Следующий код показывает, как создавать, настраивать и отображать такое окно, а также как обрабатывать результат.
OpenFileDialog может использоваться для безопасного извлечения имен файлов приложениями, работающими с частичным доверием (см. раздел Безопасность).
диалоговое окно сохранения файлов
Диалоговое окно сохранения файлов, показанное на следующем рисунке, используется функциональностью сохранения файла для получения имени сохраняемого файла.
Диалоговое окно «Общие файлы сохранения» реализуется как SaveFileDialog класс и находится в Microsoft.Win32 пространстве имен. Следующий код показывает, как создавать, настраивать и отображать такое окно, а также как обрабатывать результат.
Диалоговое окно печати, показанное на следующем рисунке, используется функциональными возможностями печати для выбора и настройки принтера, на котором пользователь хочет печатать данные.
Общее диалоговое окно печати реализуется как PrintDialog класс и находится в System.Windows.Controls пространстве имен. Следующий код показывает, как создавать, настраивать и отображать такое окно.
Настраиваемые диалоговые окна
Хотя общие диалоговые окна полезны и должны использоваться, когда это возможно, они не поддерживают требований диалоговых окон отдельного домена. В этих случаях необходимо создавать собственные диалоговые окна. Как мы увидим, диалоговое окно является окном со специальным поведением. Window реализует эти поведения и, следовательно, используется Window для создания настраиваемых модальных и немодальных диалоговых окон.
Создание модального настраиваемого диалогового окна
В этом разделе показано, как использовать Window для создания типичной реализации модального диалогового окна с помощью Margins диалогового окна в качестве примера (см. Пример диалогового окна). Это Margins диалоговое окно показано на следующем рисунке.
Настройка модального диалогового окна
Пользовательский интерфейс для типичного диалогового окна включает следующее.
Различные элементы управления, которые необходимы для сбора нужных данных.
Кнопка Закрыть в заголовке окна.
Системное меню для сворачивания, развертывания, восстановления и закрытия диалогового окна.
Расположение выше и в центре окна, открывшего диалоговое окно.
Возможность изменять размер, если это возможно, чтобы не допустить слишком маленького диалогового окна, а также предоставить пользователю полезный размер по умолчанию. Для этого необходимо задать значения по умолчанию и минимальные размеры.
Следующий код демонстрирует такую конфигурацию.
Пользовательский интерфейс для диалогового окна также распространяется в строку меню окна, открывающего диалоговое окно. Если пункт меню вызывает функцию, которая перед продолжением выполнения требует взаимодействия с пользователем посредством диалогового окна, то в названии этого пункта меню будет многоточие в заголовке, как показано ниже.
Если пункт меню вызывает функцию, которая отображает диалоговое окно, не требующее взаимодействия с пользователем, например диалоговое окно «О программе», многоточие не требуется.
Открытие модального диалогового окна
Диалоговое окно обычно отображается в результате выбора пользователем пункта меню для выполнения доменной функции, такой как установка полей документа в текстовом процессоре. Отображение диалогового окна похоже на отображение обычного окна, хотя требуется дополнительная настройка для диалогового окна. Весь процесс создания, настройки и открытия диалогового окна показан в следующем коде.
Здесь код передает в диалоговое окно сведения по умолчанию (текущие поля). Он также задает Window.Owner свойство со ссылкой на окно, в котором отображается диалоговое окно. в общем случае необходимо всегда задавать владельца для диалогового окна, чтобы обеспечить поведение окна, которое является общим для всех диалоговых окон (дополнительные сведения см. в разделе обзор Windows WPF ).
Необходимо указать владельца для поддержки автоматизации ПОЛЬЗОВАТЕЛЬСКОГО интерфейса для диалоговых окон (см. Обзор модели автоматизации пользовательскогоинтерфейса).
После настройки диалогового окна он отображается как модальный путем вызова ShowDialog метода.
Проверка предоставленных пользователем данных
Если открывается диалоговое окно и пользователь предоставляет требуемые данные, диалоговое окно отвечает за проверку допустимости предоставленных данных по следующим причинам.
С точки зрения безопасности следует проверять все входные данные.
С точки зрения конкретного домена проверка данных предотвращает обработку в коде ошибочных данных, которые могут вызывать исключения.
С точки зрения взаимодействия с пользователем диалоговое окно может помочь пользователям, показывая, какие введенные ими данные являются недопустимыми.
С точки зрения производительности проверка данных в многоуровневом приложении может уменьшить количество циклов обработки между уровнями клиента и приложения, особенно в том случае, если в приложение входят веб-службы или серверные базы данных.
Чтобы сопоставить это правило проверки со связанным элементом управления, используется следующая разметка.
После того как правило проверки будет связано, WPF автоматически применит его при входе данных в привязанный элемент управления. Если элемент управления содержит недопустимые данные, WPF отобразит красную рамку вокруг недопустимого элемента управления, как показано на следующем рисунке.
Если диалоговое окно является допустимым, оно может быть безопасно закрыто и выполнен возврат. В рамках процесса возврата необходимо возвращать результат в вызывающую функцию.
Установка результата модального диалогового окна
Диалоговое окно автоматически возвращается, false когда пользователь нажимает кнопку Закрыть в строке заголовка или выбирает пункт меню Закрыть в системном меню.
Обработка данных, возвращаемых из модального диалогового окна
Если параметр DialogResult задается в диалоговом окне, то функция, которая открыла ее, может получить результат диалогового окна, проверив DialogResult свойство при ShowDialog возврате.
После ShowDialog возврата диалоговое окно нельзя открыть повторно. Вместо этого придется создать новый экземпляр.
Создание немодального настраиваемого диалогового окна
Немодальное диалоговое окно, например диалоговое окно поиска, показанное на следующем рисунке, в основном имеет такой же внешний вид, как и модальное диалоговое окно.
Однако поведение несколько отличается, как показано в следующих разделах.
Открытие немодального диалогового окна
Немодальное диалоговое окно открывается путем вызова Show метода.
Обработка данных, возвращенных из немодального диалогового окна
В этом примере объект FindDialogBox может вернуть один или несколько результатов поиска в главное окно в зависимости от искомого текста без какой бы то ни было определенной частоты. Как и в случае с модальным диалоговым окном, немодальное диалоговое окно может возвращать результаты с помощью свойств. Однако окну, которому принадлежит данное диалоговое окно, нужно знать, когда следует проверять эти свойства. Один из способов сделать это — реализовать для диалогового окна событие, которое возникает всякий раз, когда текст найден. FindDialogBox реализует TextFoundEvent для этой цели, для которой сначала требуется делегат.
Следовательно, Find может вызвать событие при обнаружении результата поиска.
Затем окну-владельцу нужно зарегистрировать и обработать это событие.
Закрытие немодального диалогового окна
Поскольку DialogResult не нужно задавать, немодальное диалоговое окно можно закрыть с помощью механизмов, предоставляемых системой, включая следующие:
Нажатие кнопки Закрыть в строке заголовка.
Нажатие клавиш ALT+F4.