我将旧的WinForms应用转换为WPF。为了加快迁移速度,我希望在UserControls
元素中尽可能多地托管旧应用WindowsFormsHost
。
然而,当我这样做时,控件似乎溢出窗户的一侧!好像托管控件认为窗口宽度比实际宽20%左右。
为了说明我的意思,这里是设计师中WinForms控件的一个镜头:
一旦它在应用程序中托管,这里就是一个控件的镜头:
之前有其他人见过吗?这是由什么造成的,我该如何解决?
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>
BinaryCommandControl
和OptionsControl
都是自定义WinForms UserControl
元素。