WPF: Какова цель App.xaml? - PullRequest
       1

WPF: Какова цель App.xaml?

43 голосов
/ 10 ноября 2010

Я некоторое время занимался разработкой .Net, но я новичок в технологии WPF.Какова предполагаемая цель App.xaml?Кроме того, какой тип xaml-кода вы обычно добавляете в него?Кажется, что для простых приложений это можно игнорировать и оставить нетронутым.Это правда?

Ответы [ 8 ]

35 голосов
/ 11 ноября 2010

App.xaml - это декларативная часть вашего кода (обычно генерируемая Visual Studio), расширяющая System.Windows.Application. Например, Expression Blend может использовать App.xaml для совместного использования словаря ресурсов или набора данных времени разработки со всем вашим приложением. И поскольку мы используем продукты Microsoft, то, что Expression Blend может делать автоматически, мы можем делать вручную в Visual Studio.

Теперь касательная: Для меня спросить о цели App.xaml означает спросить о цели для System.Windows.Application. Не стесняйтесь обвинять меня в том, что я изменил исходный вопрос (пусть цифровой жестоко наступит).

Вы не можете просто открыть System.Windows.Controls.Window в любой сборке, которая вам нравится ... Крис Селлс, вероятно, говорит мне это в своей книге . Я начал понимать назначение System.Windows.Application при использовании MEF и MVVM Light для отображения окон WPF в DLLs (не EXEs). Я получил такие ошибки:

The type 'System.Windows.Markup.IComponentConnector' is defined in an assembly that is not referenced.

или

The type 'System.Windows.Markup.IQueryAmbient' is defined in an assembly that is not referenced.

Вышеупомянутая ошибка просто говорит о том, что я пытаюсь открыть окно WPF внутри DLL, а не и EXE. Затем появляется эта ошибка:

The component 'Songhay.Wpf.WordWalkingStick.Views.ClientView' does not have a resource identified by the URI '/Songhay.Wpf.WordWalkingStick;component/views/clientview.xaml'.

Это сводится к отсутствию средства, которое связывает XAML Windows WPF с «кодом» WPF (экземпляр). Это средство связано с WPF EXEs, а не с WPF DLLs. Visual Studio автоматически генерирует класс WPF EXE с именем App.g.cs (в папке \obj\Debug) с таким вызовом: System.Windows.Application.LoadComponent(this, resourceLocater), где resourceLocater - это переменная с плохим именем, содержащая System.Uri, указывающая на XAML, подобный ClientView.xaml упоминалось выше.

Я уверен, что у Криса Селлса есть целая глава о том, как WPF зависит от System.Windows.Application в самой его жизни. Это моя потеря (в буквальном смысле времени) за то, что я не читал об этом.

Я немного показал себя с этим модульным тестом:

[STAThread]
[TestMethod]
public void ShouldOpenWindow()
{
    Application app = new Application();
    app.Run(new Window());
}

Если не обернуть новое окно в методе System.Windows.Application.Run(), из страны СОМ возникнет ошибка: «Почему вы вытащили коврик из-под меня?»

29 голосов
/ 10 ноября 2010

Для простых приложений, это правда, его можно игнорировать. Основной целью App.xaml является хранение ресурсов (стиля, перьев, кистей и т. Д.), Которые хотели бы быть доступными во всех окнах вашего приложения.

18 голосов
/ 10 ноября 2010

Это правда.App.Xaml является своего рода центральной отправной точкой.Вы МОЖЕТЕ его использовать, или МОЖЕТЕ запустить свое первое окно (оно определено в app.xaml) вручную.Там есть несколько событий в течение жизни (например, запуск приложения).

9 голосов
/ 10 ноября 2010

Хранение ресурсов, которые используются во всем приложении.

Приложение является корнем логического дерева.

3 голосов
/ 10 ноября 2010

Это похоже на Global.asax, если вы пришли из ASP.NET фона.Вы также можете использовать его для совместного использования ресурсов в вашем приложении.Очень удобно для совместного использования ресурсов.

2 голосов
/ 12 декабря 2014
App.xaml is a major part of wpf application.
It contains major four attributes
1.X:Class->used to connect you xaml and code-behind file(xaml.cs).
2.xmlns->To resolve wpf elements like canvas,stack panel(default one).
3.xmlns:x->To resolve XAML language definition.
4. StartupUri->To give start window when application is launching.
0 голосов
/ 05 августа 2018

Вот обновленный ответ, если люди все еще ищут.

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

WPF прост для первого очень простого приложения или двух. Однако из-за повышенной гибкости фреймворка вам понадобятся учебники такого типа, которые помогут вам понять, что можно сделать откуда (в различных файлах приложения).

https://www.wpf -tutorial.com / МОФ-приложения / рабочий-с приложением-XAML /

Удачи.

0 голосов
/ 27 февраля 2017

++++++++

App.xaml является декларативной отправной точкой вашего приложения. визуальный Studio автоматически создаст его для вас при запуске нового WPF приложение, включая файл Code-behind, называемый App.xaml.cs. Oни работать так же, как для окна, где два файла являются частичными классами, работать вместе, чтобы позволить вам работать как в разметке (XAML), так и в Код-позади.

App.xaml.cs расширяет класс Application, который является центральным классом в Windows-приложение WPF. .NET перейдет в этот класс для запуска инструкции, а затем запустить нужное окно или страницу оттуда. Это также место для подписки на важные события приложения, например, запуск приложения, необработанные исключения и т. д.

Одной из наиболее часто используемых функций файла App.xaml является определить глобальные ресурсы, которые могут быть использованы и доступны со всего приложение, например глобальные стили.

+++++++++ Источник: http://www.wpf -tutorial.com / wpf-application / working-with-app-xaml /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...