与ElementHost对接

时间:2009-06-11 15:53:30

标签: wpf docking elementhost

我正在尝试将WPF用户控件添加到现有的WinForms项目中,并使WPF UserControl停靠并填充整个空间。

当前框架将WinForms UserControls加载到父表单(进入面板)以响应按钮点击。这是我试图挂钩的地方 - 当前正在加载的WinForms UserControl将具有ElementHost。

层次结构:

  • Form1.cs - 包含一个动态加载WinForms UserControls的面板
    • WinForms UserControl - 包含ElementHost
      • WPF UserControl

ElementHost将Dock设置为Fill并将其Child属性设置为ucReport,这是一个WPF UserControl,它具有以下标记(仅包括顶级设计):

<UserControl x:Class="MyClassName"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <TabControl HorizontalAlignment="Left" Name="tabControl1">
        <TabItem Header="Header1">
           ...The interesting stuff goes here
        </TabItem>
    </TabControl>
</UserControl>

当我调整表单大小时,UserControl的内容会垂直展开,但横向上,内容只会扩展到足以容纳其内容。

当我在设计器中查看WinForms UserControl(具有ElementHost的那个)时,问题很明显。指定的WPF内容正在呈现,并且从上到下填充,但不是从左到右填充。

我的想法是,它必须在XAML中设置(可能在UserControl声明?),以使其填充它的父容器,这是ElementHost - 我只是找不到属性

有人会启发我吗?

1 个答案:

答案 0 :(得分:3)

将Horizo​​ntalAlignment更改为Stretch或完全删除它。