0

カスタム Windows フォーム コントロールを WPF でホストしようとしています。私のカスタム コントロールにはパブリック コンストラクターがなく、Create()次のような静的メソッドがあります。

public abstract class MyCustomControl : UserControl
{
  internal MyCustomControl(...) {  }

  public static MyCustomControl Create(SomeEnum kind)
  {
    switch (kind)
    {
      case SomeEnum.Kind1:
        return new MySuperCustomControl(...);
      ...
    }

私がやりたいことは、このカスタム コントロールを WPF でインスタンス化し、それを でホストすることですがWindowsFormsHost、明らかに抽象クラスを追加することはできません。

 <wfi:WindowsFormsHost Width="250" Height="150">
  <my:MyCustomControl x:Name="customControl" />  <-- doesn't work
</wfi:WindowsFormsHost>

コードを介して「ホスト」に追加する方法はありますか?

4

2 に答える 2

1

XAML では、パブリック コンストラクターなしでコントロールをホストすることはできません。次の 2 つの方法を試すことができます。

  1. WindowsFormsHost の名前を定義し、WindowsFormsHost の Child プロパティを C# コードの static Create() からインスタンスに設定します。たとえば、初期化(またはロード)メソッドで。- 簡単な方法です。
  2. WindowsFormsHost の Child プロパティを Create() メソッドにバインドしてみてください。率直に言って、このアプローチが機能するかどうかはわかりません...しかし、試すことができます:).. XAMLでメソッドにバインドする方法は? あなたは読むことができます-これを読むか、msdnまたはgoogleで調べてみてください:)
于 2009-12-16T17:57:11.140 に答える
1

見つけました、それはWindowsFormsHost.Child財産です。

于 2009-12-16T17:48:19.937 に答える