Hello World [WPF] - PullRequest
       5

Hello World [WPF]

0 голосов
/ 18 июля 2009

Я пытаюсь создать свое приложение Hello World для Windows в WPF.

Что мне сделать, чтобы запустить это окно?

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.

Но приложение не работает.

В чем проблема?

Ответы [ 3 ]

2 голосов
/ 18 июля 2009

Было бы лучше создать новое приложение 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.

0 голосов
/ 18 июля 2009

Если вы собираетесь использовать метод Main, ваш файл App.xaml будет игнорироваться.

App.xaml используется только в том случае, если вы установили его действие сборки на ApplicationDefinition. Когда вы сделаете это, вы заметите, что получаете ошибку компилятора, так как у вас будет две точки входа в вашу программу - поэтому вам придется потерять метод Main.

Если вы хотите сохранить свой Main метод, вы можете. Не меняйте действие Build на 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 своим пространством имен.

0 голосов
/ 18 июля 2009

Использовать проект WPF?

...