相关疑难解决方法(0)

将WinForms应用程序升级到WPF

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

我在做这件事时遇到了一些问题.我做了以下(使用Visual Studio 2008 SP1):

  1. 将目标框架从2.0更改为3.5.
  2. 添加了PresentationCore,PresentationFramework和WindowsBase引用.

在这一点上,我注意到有些不对劲.当我右键单击该项目并选择Add | New Item,我没有创建WPF窗口的选项 - 我可以创建的唯一WPF类是WPF用户控件.由于我有一些其他WPF项目,我将App.xaml.*和Window1.xaml.*从该项目复制到我的,并根据需要更新它们(基本上只是将该项目的命名空间更改为我项目的命名空间).

然后我删除了Program.cs(之前包含Main方法,显示了主WinForm表单),并构建了该项目.我收到一个错误,表明没有Main方法.

看起来内部Visual Studio知道这个项目实际上是一个WinForms应用程序,而不是WPF应用程序.在WPF项目中(通过选择"WPF Application"创建),在Application属性中,我可以将Application类的实例设置为启动对象.在我的WinForms转换项目中,这不是一个选项.

我在文本编辑器中快速查看了.csproj文件,但我找不到任何可以告诉Visual Studio项目实际上是WinForms而不是WPF的东西.

还有什么办法可以将我的WinForms项目变成一个"真正的"WPF项目?除了创建新项目并只替换当前项目之外,我还有其他选择吗?

更新:我仔细查看了.csproj文件,我注意到App.xaml已添加为页面:

<Page Include="App.xaml">
  <Generator>MSBuild:Compile</Generator>
  <SubType>Designer</SubType>
</Page>
Run Code Online (Sandbox Code Playgroud)

但是,在我的其他WPF项目中,它是一个ApplicationDefinition.一旦我改变了,我可以将我的Application实例设置为启动对象,我的应用程序将运行.但是,我仍然没有选项来创建除用户控件之外的任何WPF类型.

.net wpf upgrade visual-studio-2008 winforms

14
推荐指数
2
解决办法
9824
查看次数

如何以编程方式在WinForm应用程序中创建WPF窗口

我有一个现有的WinForm应用程序,现在太多了,无法移植到WPF.但是,我需要一个窗口,其中包含一些我在WinForm中无法实现的棘手的透明行为(是的,尝试了Layerd Windows,但它是不行的).

WPF允许我所需要的透明度行为非常简单.

我当然用Google搜索,但只能找到如何在WinForm中创建WPF控件的提示,但这不是我需要的.我需要一个单独的WPF窗口,它完全独立于我的其他窗体.

WPF窗口将是一个相当简单的全屏和无边框覆盖窗口,我将在其中执行一些简单的绘图,每个绘图都有不同的透明度.

如何在WinForm应用程序中创建WPF窗口?

wpf winforms

11
推荐指数
2
解决办法
2万
查看次数

在WindowsForm APP中打开WPF窗口

我在WindowsForm应用程序中添加了一个名为novoLogin的新WPF窗口.

添加后,我添加了system.xaml参考....调试正常.

现在我试图从现有的windowsForm中打开这个新窗口.

novoLogin nl = new novoLogin();
nl.show();
Run Code Online (Sandbox Code Playgroud)

编译器给出了这个错误:

错误1'WindowsFormsApplication1.novoLogin'不包含'show'的定义,并且没有扩展方法'show'可以找到接受类型'WindowsFormsApplication1.novoLogin'的第一个参数(你是否缺少using指令或程序集引用?)

c# wpf winforms

8
推荐指数
2
解决办法
3万
查看次数

标签 统计

winforms ×3

wpf ×3

.net ×1

c# ×1

upgrade ×1

visual-studio-2008 ×1