Но если вас интересует только простое приложение, тогда обработка событий щелчков с помощью прямолинейного обработчика будет вполне приемлемой.
Окно Document Outline
Во время работы с любым основанным на XAML проектом вы определенно будете использовать значительный объем разметки для представления пользовательского интерфейса. Когда вы начнете сталкиваться с более сложной разметкой XAML, может оказаться удобной визуализация разметки для быстрого выбора элементов с целью редактирования в визуальном конструкторе Visual Studio.
В настоящее время ваша разметка довольно проста, т.к. было определено лишь несколько элементов управления внутри начального элемента
. Тем не менее, необходимо найти окно Document Outline (Схема документа), которое по умолчанию располагается в левой части окна IDE-среды (если обнаружить его не удается, то данное окно можно открыть через пункт меню View► Other Windows (Вид►Другие окна)). При активном окне визуального конструктора XAML (не окне с файлом кода С#) в IDE-среде можно заметить, что в окне Document Outline отображаются вложенные элементы (рис. 24.9).
Этот инструмент также предоставляет способ временного сокрытия заданного элемента (или набора элементов) на поверхности визуального конструктора, а также блокировки элементов с целью предотвращения их дальнейшего редактирования. В главе 25 вы увидите, что окно Document Outline предлагает много других возможностей для группирования выбранных элементов внутри новых диспетчеров компоновки (помимо прочих средств).
Включение и отключение отладчика XAML
После запуска приложения на экране появляется окно МаinWindow
. Кроме того, можно также видеть интерактивный отладчик (рис. 24.10).
При желании отключить его понадобится найти настройки, касающиеся отладки XAML, на вкладке Tools►Options►Debugging►Hot Reload (Сервис►Параметры►Отладкам►Горячая перезагрузка). Снятие отметки с верхнего флажка предотвращает перекрытие окон приложения окном отладчика (рис. 24.11).
Исследование файла Арр.xaml
Как проект узнает, какое окно отображать? Еще большая интрига в том, что в результате исследования файлов кода, относящихся к приложению, метод Main()
обнаружить не удастся. Вы уже знаете, что приложения обязаны иметь точку входа, так как же .NET Core становится известно, каким образом запускать приложение? К счастью, оба связующих элемента автоматически поддерживаются через шаблоны Visual Studio и инфраструктуру WPF.
Чтобы разгадать загадку, какое окно открывать, в файле Арр.xaml
посредством разметки определен класс приложения. В дополнение к определениям пространств имен он определяет свойства приложения, такие как StartupUri
, ресурсы уровня приложения (рассматриваемые в главе 27) и специфические обработчики для событий приложения вроде Startup
и Exit
. В StartupUri
указано окно, подлежащее загрузке при запуске. Откройте файл Арр.xaml
и проанализируйте разметку в нем:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfTesterApp"
StartupUri="MainWindow.xaml">
С применением визуального конструктора XAML и средства завершения кода Visual Studio добавьте обработчики для событий Startup
и Exit
. Обновленная разметка XAML должна выглядеть примерно так (изменение выделено полужирным):
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfTesterApp"
StartupUri="MainWindow.xaml" Startup="App_OnStartup" Exit="App_OnExit">
Содержимое файла Арр.xaml.cs
должно быть похожим на приведенное ниже:
public partial class App : Application
{
private void App_OnStartup(object sender, StartupEventArgs e)
{
}
private void App_OnExit(object sender, ExitEventArgs e)
{
}
}
Обратите внимание, что класс помечен как частичный (partial
). На самом деле все оконные классы в отделенном коде для файлов XAML помечаются как частичные. В этом-то и кроется решение вопроса, где находится метод Main()
. Но сначала необходимо выяснить, что происходит при обработке файлов XAML утилитой msbuild.ехе
.
Отображение разметки XAML окна на код C#