你好世界[WPF]

时间:2009-07-18 16:48:45

标签: c# .net wpf windows

我正在尝试在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 refs。

但是应用程序没有运行。

有什么问题?

3 个答案:

答案 0 :(得分:2)

创建一个新的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中也是如此。

答案 1 :(得分:0)

使用WPF项目?

答案 2 :(得分:0)

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

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

如果您想保留Main方法,可以。不要在App.xaml上更改Build Action(实际上,我认为你可以删除它),并执行以下操作:

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

/Project1替换为您的命名空间。