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 を独自のプロジェクトに保持しましたか?

実行している OS プラットフォームは何ですか?

于 2012-08-26T12:21:07.863 に答える