Этот инструмент также предоставляет способ временного сокрытия заданного элемента (или набора элементов) на поверхности визуального конструктора, а также блокировки элементов с целью предотвращения их дальнейшего редактирования. В главе 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#
Когда утилита msbuild.exe обрабатывает файл *.csproj, она создает для каждого файла XAML в проекте три файла: *.g.cs (где g означает auto*.g.i.cs (где i означает *.baml (для BAML (Binary Application Markup Language — двоичный язык разметки приложений)). Такие файлы сохраняются в каталоге \obj\Debug (и могут просматриваться в окне Solution Explorer за счет щелчка на кнопке Show All Files (Показать все файлы )).
Чтобы их увидеть, может потребоваться щелкнуть на кнопке Refresh (Обновить) в окне Solution Explorer, т.к. они не являются частью фактического проекта, а представляют собой артефакты построения.
Чтобы сделать процесс более осмысленным, элементам управления полезно назначить имена. Назначьте имена элементам управления Button и Calendar, как показано ниже:
Margin="10,10,0,0"
VerticalAlignment="Top" Width="75" Click="Button_Click">
// Для краткости разметка не показана,