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