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

Jef*_*Fay 43 wpf xaml

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

ras*_*asx 37

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可能会在他的书中告诉我这一点.我开始理解System.Windows.Application使用MEF和MVVM Light在DLLs(不EXEs)中显示WPF窗口的目的.我得到这样的错误:

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(在您的\obj\Debug文件夹中)的WPF EXE类,System.Windows.Application.LoadComponent(this, resourceLocater)其中包含以下调用:where resourceLocater是一个命名错误的变量,包含System.Uri指向XAML的变量,ClientView.xaml如上所述.

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

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

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

如果没有在System.Windows.Application.Run()方法中包装一个新的窗口,将会引起COM的一个错误,那就是"为什么你从我下面拉地毯?"

  • 现在,我真的很困惑! (20认同)
  • 这是一个很好的解释. (4认同)

小智 30

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

  • 如果你问我这个答案比接受的答案要好得多.更多的例子会更好.+1 :) (4认同)

小智 18

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


Nic*_*uet 9

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

应用程序是逻辑树的根.