代码之家  ›  专栏  ›  技术社区  ›  CodeWarrior

Visual Studio 2010使用application.xaml;Blend 4使用app.xaml

  •  0
  • CodeWarrior  · 技术社区  · 16 年前

    以前,我正在编写的项目中的所有应用程序级资源都存储在app.xaml中。然后我决定从2008年迁移到2010年,这就是问题的开始。

    迁移之后,我尝试使用一个测试窗口而不是普通的启动窗口来做一些测试。在更改了Startup对象之后,突然间我遇到了许多编译错误,而不是什么(长话短说)导致我发现现在有两个文件保存着与项目相关联的应用程序级资源:app.xaml(原始文件)和application.xaml(此时确实为空文件)。我将所有的资源(以及合并的字典)都迁移到application.xaml,就Visual Studio而言,这一切又回到了现实中。

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

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

    科丽

    1 回复  |  直到 11 年前
        1
  •  3
  •   Walt Ritscher    14 年前

    根据您选择的编程语言,在命名方面存在细微的差异。 VisualBasicWPF项目使用application.xaml,而C项目将其命名为app.xaml。

    正如您可能知道的,所有的.NET应用程序都需要一个主方法。此外,Windows应用程序需要一个消息泵来连接到Windows消息系统。在WPF中,可以使用应用程序类开始侦听Windows消息。

    以下是您可以明确地做到这一点的方法。

    vb

    公共类启动
    
    <stathread()>
    共享的Sub-Main()
    将应用程序变暗为新应用程序()
    将窗口变暗为新的主窗口()
    
    显示窗口()
    App.Run()
    
    结束子
    
    端类
    < /代码> 
    
    

    C

    公共类启动
    {
    
    
    [ StActhRead()]
    公共静态void main()
    {
    应用程序app=new application();
    mainWindow window=new mainWindow();
    
    显示窗口();
    App.Run();
    
    }
    }
    < /代码> 
    
    

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

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

    你选择。 VisualBasicWPF项目使用application.xaml,而C项目将其命名为app.xaml。

    正如您可能知道的,所有.NET应用程序都需要一个主方法。此外,Windows应用程序需要一个消息泵来连接到Windows消息系统。在WPF中,可以使用应用程序类开始侦听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编写此代码。

    enter image description here

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