WPF中托管的Windows窗体UserControl溢出窗口

时间:2015-05-28 00:52:06

标签: wpf winforms user-controls wpf-controls winforms-interop

我将旧的WinForms应用转换为WPF。为了加快迁移速度,我希望在UserControls元素中尽可能多地托管旧应用WindowsFormsHost

然而,当我这样做时,控件似乎溢出窗户的一侧!好像托管控件认为窗口宽度比实际宽20%左右。

为了说明我的意思,这里是设计师中WinForms控件的一个镜头:

AdvancedTabDesigner

一旦它在应用程序中托管,这里就是一个控件的镜头:

AdvancedTabHosted

之前有其他人见过吗?这是由什么造成的,我该如何解决?

WindowsFormsHost元素位于TabControl TabItem内,如果这有任何区别的话。

编辑:以下是相关的XML:

<Window x:Class="MyWPFApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:forms="clr-namespace:MyWinFormsApp;assembly=MyWinFormsApp"
        Title="MainWindow" Height="600" Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="3*"/>
        </Grid.RowDefinitions>

        <!-- Grid Row 1 -->
        <!-- Other controls here in row 1 -->

        <!-- Grid Row 2 -->
        <TabControl Grid.Row="2">
            <TabItem Header="Advanced">
                <WindowsFormsHost>
                    <forms:BinaryCommandControl/>
                </WindowsFormsHost>
            </TabItem>
            <TabItem Header="Options">
                <WindowsFormsHost>
                    <forms:OptionsControl/>
                </WindowsFormsHost>
            </TabItem>
        </TabControl>
    </Grid>
</Window>

BinaryCommandControlOptionsControl都是自定义WinForms UserControl元素。

0 个答案:

没有答案