试图在wpf应用程序中使用winforms控件

时间:2012-08-26 08:48:22

标签: c# wpf winforms

我正在尝试在简单的WPF应用程序中使用使用winforms的MonthCalendar控件。我发现通过使用WindowsFormsHost,可以在wpf应用程序中使用winforms控件。它适用于winforms的内置控件,但是当我尝试实例化此控件MonthCalendar的对象时,我收到错误消息“无法实例化MonthCalendar的对象”。

有关为何发生这种情况的任何建议以及如何克服这个问题? MonthCalendar的源代码位于http://www.codeproject.com/Articles/10840/Another-Month-Calendar?msg=2298161#xx2298161xx

我在xaml中实例化它:

<Window x:Class="MonthCalendarTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
    xmlns:pc="clr-namespace:Pabo.Calendar"
    Title="MainWindow" Height="350" Width="525">
<Grid Height="65" Width="280">

    <WindowsFormsHost Margin="0,0,12,12" Height="100">
        <pc:MonthCalendar></pc:MonthCalendar>

    </WindowsFormsHost>
</Grid>

1 个答案:

答案 0 :(得分:2)

我可以按照以下步骤开始工作:

  • 使用Visual Studio 2010
  • 创建新的WPF应用程序
  • 将平台更改为“.Net Framework 4”(非客户端配置文件)
  • 添加对System.Windows.Forms和WindowsFormIntegration的引用

  • 从:http://www.codeproject.com/KB/selection/MonthCalendar/MonthCalendar_src_vs2005.zip

  • 下载MonthCalendar
  • 提取MonthCalendar,并将现有项目添加到Solution
  • 将MonthCalendar平台更改为“.Net Framework 4”(非客户端配置文件)
  • 删除并重新添加System.Design引用,以便使用.NET 4 one
  • 在WPF应用程序中添加对MonthCalendar项目的引用
  • 在XAML中使用命名空间参考xmlns:pc =“clr-namespace:Pabo.Calendar; assembly = MonthCalendar”

enter image description here

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
        xmlns:pc="clr-namespace:Pabo.Calendar;assembly=MonthCalendar"
    Title="MainWindow" Height="350" Width="525">
    <Grid Height="65" Width="280">
        <WindowsFormsHost Margin="0,0,12,12" Height="100">
            <pc:MonthCalendar x:Name="myCalendar"/>
        </WindowsFormsHost>
    </Grid>
</Window>

那你有什么不同的做法?

您是否将MonthCalendar保留在自己的项目中?

您正在运行什么操作系统平台?