0

我正在尝试在 WPF 中托管自定义 Windows 窗体控件。我的自定义控件没有公共构造函数,它有一个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

找到了,是WindowsFormsHost.Child房产。

于 2009-12-16T17:48:19.937 回答
1

如果没有 XAML 中的公共构造函数,您将无法托管控件。您可以尝试两种方式:

  1. 为您的 WindowsFormsHost 定义名称并将 WindowsFormsHost 的 Child 属性从 C# 代码中的静态 Create() 设置为您的实例。例如在初始化(或加载)方法中。- 这是简单的方法。
  2. 尝试将 WindowsFormsHost 的 Child 属性绑定到 Create() 方法。坦率地说,我不知道这种方法是否可行......但你可以尝试:)..如何绑定到 XAML 中的方法?您可以阅读 -这个或尝试查看 msdn 或 google :)
于 2009-12-16T17:57:11.140 回答