繁体   English   中英

你好世界[WPF]

[英]Hello World [WPF]

我正在尝试在WPF中创建我的hello world Windows应用程序。

我应该怎么做才能运行此窗口?

Class1.xaml

<Window x:Class="Window1"
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       Title="Window1" Height="300" Width="300">
        <Grid>    </Grid>
</Window>

App.xaml中

<Application x:Class="App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="Class1.xaml" >
    <Application.Resources>
    </Application.Resources>
</Application>

Program.cs中

class Program
    {
        [STAThread]
        public static void Main()
        {
            new App().Run();
        }
    }

我创建了一个空白的sln并添加了这三个文件。 我还添加了WindowsBase,PresentationBase,PresentationFramework引用。

但是该应用程序未运行。

问题是什么?

创建新的WPF应用程序将是解决之道,但我可能知道修复它的一种方法。

您的项目文件当前可能具有如下所示的部分:

<Page Include="App.xaml">
  <Generator>MSBuild:Compile</Generator>
  <SubType>Designer</SubType>
</Page>

您需要将其更改为使用ApplicationDefinition而不是Page ,类似于:

<ApplicationDefinition Include="App.xaml">
  <Generator>MSBuild:Compile</Generator>
  <SubType>Designer</SubType>
</ApplicationDefinition>

这样,您的项目应该知道在运行应用程序时实际开始什么。

我从中得到的解决方案是VS2010解决方案,但我认为在VS2008中是相同的。

使用WPF项目?

如果您要使用Main方法,则您的App.xaml文件将被忽略。

仅当将Build Action的Build Action设置为ApplicationDefinition才使用App.xaml。 执行此操作时,您会注意到遇到编译器错误,因为程序中有两个入口点,因此您将不得不丢失Main方法。

如果要保留Main方法,可以。 不要更改App.xaml上的“构建操作”(实际上,我认为您可以删除它),并执行以下操作:

[STAThread]
public static void Main()
{
    App app = new App();
    app.StartupUri = new System.Uri("/Project1;component/Class1.xaml", System.UriKind.Relative);                     
    app.Run();
}

用您的名称空间替换/Project1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM