代码之家  ›  专栏  ›  技术社区  ›  Igal Tabachnik

在WPF中实例化Windows窗体控件,而不使用默认构造函数

  •  0
  • Igal Tabachnik  · 技术社区  · 15 年前

    我正在尝试在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>
    

    有没有方法可以通过代码将它添加到“主机”中?

    2 回复  |  直到 7 年前
        1
  •  1
  •   RredCat    15 年前

    在XAML中没有公共构造函数,无法承载控件。 您可以尝试两种方法:

    1. 为您的 windowsformshost和set子级 WindowsFormsHost的属性 C中静态create()的实例# 代码。例如,在初始化(或 加载)方法。-这是一个简单的方法。
    2. 尝试将WindowsFormsHost的子属性绑定到create()方法。 坦白地说,我不知道或者这个 方法是有效的…但是你可以 尝试:)如何绑定到XAML中的方法? 你可以阅读- this 或尝试 在msdn或google中查找:)
        2
  •  1
  •   Igal Tabachnik    15 年前

    找到了,是 WindowsFormsHost.Child 财产。

    推荐文章