1

我正在尝试在一个简单的 WPF 应用程序中使用使用 winforms 的 MonthCalendar 控件。我发现通过使用 WindowsFormsHost,winforms 控件可以在 wpf 应用程序中使用。它适用于 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>

4

1 回答 1

3

我可以按照以下步骤使其工作:

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

  • 从以下网址下载 MonthCalendar:http:
    //www.codeproject.com/KB/selection/MonthCalendar/MonthCalendar_src_vs2005.zip

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

在此处输入图像描述

<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 保留在它自己的项目中?

您在哪个操作系统平台上运行?

于 2012-08-26T12:21:07.863 回答