我有一个项目,我写了几年前,在它.为了更好地帮助我学习WPF,我想重写这在WPF.理想情况下,我想只是修改当前的项目,我已经写UI在WPF,而不是创建一个新的项目。

我有一些问题,这样做。我做了以下(使用Visual Studio2008SP1):

  1. 变更的目标的框架,从2.0到3.5。
  2. 加PresentationCore,PresentationFramework,并WindowsBase引用。

在这一点上,我注意到有些不对劲。当我右击的项目和选定的增加|新项目,我没有选择,以创建一个WPF窗的唯一WPF类我可以创建一个WPF的用户控制。因为我有一些其他WPF项目的周围,我复制的应用程序。样式* 和Window1.样式* 从该项目向地雷,并更新它们作为必要的(基本上只是改变名字空间,项目的名称空间是我的项目)。

然后我被删除的程序。cs(其先前所载的主要方法,显示的主要WinForm的形式),以及建造项目。我得到了错误指示,没有主要方法。

这似乎是国内Visual Studio知道,这个项目真的是它的应用程序,并不一WPF应用程序。在WPF项目(建立由选择"WPF应用程序"),在应用程序的性质,我可以设置的应用程序的实例类作为启动的对象。在我它转换的项目,这不是一个选项。

我花了快来看看的.csproj文件中的一个文本编辑器,但是我没找到任何东西会告诉Visual Studio,该项目是真的它而不是WPF.

还有什么我需要做把我的它的项目为一个"真正的"WPF项目?我有一个选项,其他比创建一个新项目,只是取代当前的项目?

更新: 我拿来看看。csproj文件,我注意到,应用程序。xaml加入作为一个页面:

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

然而,在我的其他WPF项目,它是一个ApplicationDefinition.一旦我改变了,我可以把我的应用实例作为启动的对象,我的应用程序,将运行。我仍然没有一个选项创建任何WPF比其他类型用户的控制,虽然。

有帮助吗?

解决方案

我不知道 某些 什么在项目文件中通知Visual Studio什么类型的项目正在使用,但是我猜是"ProjectTypeGuids"是关键。

我WPF项目有:

<ProjectTypeGuids>
   {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};
   {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>

这里是一个链接 我发现它描述了guid和什么样的项目,他们表示。你会注意到,guid开始"60DC"相匹配的名单的链接WPF应用程序。

其他提示

帆船柔道的答案为我工作将它的项目成WPF,但没有详细描述了什么是需要的;

  1. 打开的 csproj 文件的项目要转换。
  2. 搜索字符串 <ProjectTypeGuids> -最可能也不会存在。
  3. 添加以下内标记的项目文件。如果你有多重 PropertyGroup 标记,使用的一个没有 Condition 属性(例如默认的性质)。

    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

  4. Save-如果你有的项目开VS将要求重新载入该项目。

从我所看到的和测试,我现在可以很容易地加WPF Windows 它.我的老年它也没有问题。

遗憾的是没有。

WPF和Windows形式的项目不相容的。

  • 尝试提取尽可能多的烦躁 逻辑的代码成一类图书馆
  • 创建一个新的空白溶液
  • 增加一个新的WPF项目的解决方案
  • 添加这类图书馆的项目 解决方案
  • 设置这类图书馆作为一个依赖性的 WPF项目
  • 重建的windows在WPF

希望这对你的作品。

好运与这一努力!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top