我正在尝试在WPF中创建我的hello world windows应用程序。
如何运行此窗口?
<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>
<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>
class Program
{
[STAThread]
public static void Main()
{
new App().Run();
}
}
我创建了一个空白sln并添加了这三个文件。我还添加了WindowsBase,PresentationBase,PresentationFramework refs。
但是应用程序没有运行。
有什么问题?
答案 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
替换为您的命名空间。