【问题标题】:Visual Studio 2010 uses Application.xaml; Blend 4 uses App.xamlVisual Studio 2010 使用 Application.xaml; Blend 4 使用 App.xaml
【发布时间】:2010-08-03 18:20:23
【问题描述】:

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

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

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

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

科里

【问题讨论】:

  • 我有 vs2010,它创建 App.xaml,从未见过 application.xaml?你 VS 是最新的吗?
  • 你确定这不仅仅是一个意外的重命名(可能在 .csproj 文件中)。 vs2010自发布以来我就用过,还没有过这样的经验……
  • 我以前从未编辑过 vbproj 文件,但似乎将 更改为 App.xaml 就可以了。我很想知道它最初是如何发生的。哥布林,发个回答帖,我就设置为回答。感谢您的帮助!

标签: wpf visual-studio-2010 expression-blend app.xaml


【解决方案1】:

根据您选择的编程语言,命名会略有不同。 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 文件。

【讨论】:

  • 感谢您的回答。以前我直接编辑了 vbproj 文件,并解决了这个问题,但你的方法也有效,解释和截图提供了很好的洞察力。再次感谢!
猜你喜欢
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
相关资源
最近更新 更多