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

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

8 ответов

Решение

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

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

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() Метод выдаст ошибку из страны COM, говоря: "Почему вы вытащили коврик из-под меня?"

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

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

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

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.

++++++++

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

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

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

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

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

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

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

https://www.wpf-tutorial.com/wpf-application/working-with-app-xaml/

Удачи.

Другие вопросы по тегам