如何根据窗口大小/分辨率限制WPF WindowsFormsHost高度

时间:2014-06-06 06:35:55

标签: c# wpf

我正在使用第三方工具(AxInterop.EDOfficeLib dll)来显示WPF用户控件中的Excel工作表。通过使用此工作表,用户可以创建自定义报告。

以下是我的XAML:

 <DockPanel  Margin="0,0,0,0" LastChildFill="False" Name="PanelCustomeReport">
                            <StackPanel>
                                <Grid Background="{DynamicResource OMSToolBarBlueGradientBrush}">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="1*"></RowDefinition>
                                    </Grid.RowDefinitions>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="1*"></ColumnDefinition>
                                    </Grid.ColumnDefinitions>
                                    <ScrollViewer Grid.Row="0" Grid.Column="0">
                                        <WindowsFormsHost>
                                            <edrawOffViewer:AxEDOffice x:Name="framer" NotifyCtrlReady="framer_NotifyCtrlReady"/>
                                        </WindowsFormsHost>
                                    </ScrollViewer>
                                </Grid>
                            </StackPanel>
                        </DockPanel>

问题:

当我在运行模式WindowsFormHost中调整表单大小时,控件不会相应地设置其高度和宽度。

有关更清晰的视图,请参阅快照:

enter image description here

正如您在快照中看到的那样,绿线是网格的结尾,但windowformhost超过了红线。我如何才能在网格中限制它。

如果需要更多信息,请告诉我。我会尝试提供它。

1 个答案:

答案 0 :(得分:0)

你可以在这里使用ViewBox,它可以帮助你。

<Viewbox>
    <DockPanel  Margin="0,0,0,0" LastChildFill="False" Name="PanelCustomeReport">
                            <StackPanel>
                                <Grid Background="{DynamicResource OMSToolBarBlueGradientBrush}">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="1*"></RowDefinition>
                                    </Grid.RowDefinitions>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="1*"></ColumnDefinition>
                                    </Grid.ColumnDefinitions>
                                    <ScrollViewer Grid.Row="0" Grid.Column="0">
                                        <WindowsFormsHost>
                                            <edrawOffViewer:AxEDOffice x:Name="framer" NotifyCtrlReady="framer_NotifyCtrlReady"/>
                                        </WindowsFormsHost>
                                    </ScrollViewer>
                                </Grid>
                            </StackPanel>
                        </DockPanel>
</Viewbox>