У меня есть побочный проект, который я написал несколько лет назад в WinForms. Чтобы лучше помочь мне изучить WPF, я хотел бы переписать его в WPF. В идеале я хотел бы просто изменить текущий проект и переписать пользовательский интерфейс в WPF вместо создания нового проекта.
У меня проблемы с этим. Я сделал следующее (с помощью Visual Studio 2008 SP1):
- Изменена целевая платформа с 2.0 на 3.5.
- Добавлены ссылки на PresentationCore, PresentationFramework и WindowsBase.
В этот момент я заметил, что что-то не так. Когда я щелкнул правой кнопкой мыши по проекту и выбрал Add | Новый элемент, у меня не было возможности создать окно WPF - единственный класс WPF, который я мог создать, - это пользовательский элемент управления WPF. Поскольку у меня были некоторые другие проекты WPF, я скопировал App.xaml. * И Window1.xaml. * Из этого проекта в мой и обновил их по мере необходимости (в основном просто меняя пространство имен этого проекта на пространство имен моего проекта).
Затем я удалил Program.cs (который ранее содержал метод Main, который отображал основную форму WinForm) и собрал проект. Я получил сообщение об ошибке, указывающее, что метод Main отсутствует.
Кажется, внутренне Visual Studio знает, что этот проект действительно является приложением WinForms, а не приложением WPF. В проекте WPF (созданном путем выбора «Приложение WPF») в свойствах приложения я могу установить экземпляр класса приложения в качестве объекта запуска. В моем конвертированном проекте WinForms это не вариант.
Я быстро взглянул на файл .csproj в текстовом редакторе, но не смог найти ничего, что могло бы сказать Visual Studio, что проект действительно WinForms, а не WPF.
Что еще мне нужно сделать, чтобы превратить мой проект WinForms в "настоящий" проект WPF? У меня есть другой вариант, кроме создания нового проекта и просто замены моего текущего проекта?
Обновление: Я внимательно посмотрел на файлы .csproj и заметил, что App.xaml был добавлен как страница:
<Page Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
Однако в моем другом проекте WPF это ApplicationDefinition. Как только я изменил это, я мог установить свой экземпляр Application в качестве объекта запуска, и мое приложение запустилось. У меня все еще нет возможности создавать какие-либо типы WPF, кроме пользовательских элементов управления.