WPF:什么是App.xaml的目的?

时间:2010-11-10 15:48:26

标签: wpf xaml

我已经完成了.Net开发一段时间,但我是WPF技术的新手。 App.xaml的假设目的是什么?此外,通常会放入哪种类型的xaml代码?对于简单的应用程序来说,它似乎可以被忽略并保持不变。这是真的?

8 个答案:

答案 0 :(得分:35)

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 ...... Chris Sells可能会在his book告诉我这个。在System.Windows.Application(不是DLLs)中使用MEF和MVVM Light来显示WPF窗口时,我开始理解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.

上述错误只是说我正在尝试在DLL中打开一个WPF窗口而一个EXE。然后,出现了这个错误:

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

这归结为缺少将WPF Window XAML与WPF“代码”(实例)相关联的工具。此工具与WPF EXEs相关联,而非WPF DLLs。 Visual Studio自动生成一个名为App.g.cs的WPF EXE类(在\obj\Debug文件夹中),其中包含以下调用:System.Windows.Application.LoadComponent(this, resourceLocater)其中resourceLocater是一个包含System.Uri命名的变量{1}}指向XAML,如上面提到的ClientView.xaml

我确信克里斯·塞尔斯(Chris Sells)已经写了一整章关于WPF如何依赖System.Windows.Application的生命。没有阅读它是我的损失(非常简单的时间)。

我已经通过单元测试向自己展示了一些东西:

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

未能在System.Windows.Application.Run()方法中包装一个新窗口会引起COM谈论的错误,“你为什么从我下面拉地毯?”

答案 1 :(得分:29)

对于简单的应用程序,确实如此,可以忽略它。 App.xaml的主要目的是保存您希望在应用程序中的所有窗口中可用的资源(样式,笔,画笔等)。

答案 2 :(得分:18)

确实如此。 App.Xaml是某种中心起点。您可以使用它,也可以手动启动第一个窗口(在app.xaml中定义)。那里有一些生命事件(如应用程序启动)。

答案 3 :(得分:9)

存储整个应用程序中使用的资源。

应用程序是逻辑树的根。

答案 4 :(得分:3)

如果您来自ASP.NET背景,它就像Global.asax。您还可以使用它在整个应用程序中共享资源。非常方便资源共享。

答案 5 :(得分:2)

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.

答案 6 :(得分:0)

++++++++

  

App.xaml是应用程序的声明性起点。视觉   当您启动新的WPF时,Studio将自动为您创建它   应用程序,包括名为App.xaml.cs的代码隐藏文件。他们   像Window一样工作,其中两个文件是部分类,   一起工作,允许你在标记(XAML)和   代码隐藏。

     

App.xaml.cs扩展了Application类,它是一个中心类   WPF Windows应用程序。 .NET将启动此课程   说明然后从那里开始所需的窗口或页面。   这也是订阅重要应用程序事件的地方,   比如应用程序启动,未处理的异常等等。

     

App.xaml文件最常用的功能之一是   定义可以从全国使用和访问的全局资源   应用程序,例如全局样式。

+++++++++ 资料来源:http://www.wpf-tutorial.com/wpf-application/working-with-app-xaml/

答案 7 :(得分:0)

这里是更新的答案,以防人们还在寻找。

在WPF上有一篇出色的文章,该链接专门带您进入App.Xaml点,开始教您使用它所做的事情。

对于第一个或两个非常简单的应用程序,WPF很容易。但是,由于该框架具有更高的灵活性,您需要这些类型的教程来帮助您了解可以从何处(在各种应用程序文件中)进行操作。

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

祝你好运。