0

以前,我正在创作的项目中的所有应用程序级资源都存储在 App.xaml 中。然后我决定从 VS 2008 迁移到 2010,这就是麻烦开始的地方。

迁移后,我尝试使用测试窗口而不是正常的启动窗口进行一些测试。更改启动对象后,突然间我遇到了很多编译错误,而不是什么(长话短说)导致发现现在有两个文件包含与项目相关的应用程序级资源:App.xaml(原始) ,和 Application.xaml(此时确实是空的)。我将所有资源(以及合并的字典)迁移到 Application.xaml,就 Visual Studio 而言,一切都再次正确。

然后我发现 Blend 仍然想使用 App.xaml。我创建了几个资源并将它们放置在 Application.xaml 中,并看到当我使用 Blend 编译时它们没有被使用(但是当我使用 VS 编译时它们被使用)。

在哪里指定哪个 xaml 是顶级 WPF 资源文件?这已经失控了……

科里

4

1 回答 1

3

根据您选择的编程语言,命名略有不同。Visual Basic WPF 项目使用 Application.xaml,而 C# 项目将其命名为 App.xaml。

您可能知道所有 .NET 应用程序都需要 Main 方法。此外,Windows 应用程序需要消息泵才能连接到 Windows 消息传递系统。在 WPF 中,您可以使用 Application 类开始侦听 Windows 消息。

这是您可以明确执行此操作的方法。

VB

Public Class Startup

  <STAThread()>
  Shared Sub Main()
    Dim app As New Application()
    Dim window As New MainWindow()

    window.Show()
    app.Run()

  End Sub

End Class

C#

public class Startup
    {


  [STAThread()]
  public static void Main()
  {
    Application app = new Application();
    MainWindow window = new MainWindow();

    window.Show();
    app.Run();

  }
}

由于创建此类代码对于 WPF 应用程序很常见,您可以通过定义派生自 System.Windows.Application 的 XAML 文件和类并将其生成操作指定为“ApplicationDefinition”来告诉 MSBuild 编写此代码。

在此处输入图像描述

在您的情况下,您可以在解决方案资源管理器中选择正确的文件并更改 BuildAction,而不是编辑 VbProj 文件。

于 2011-10-31T17:43:57.400 回答