GridSplitter被WinForm元素隐藏

时间:2009-04-06 06:50:54

标签: wpf winforms xaml gridsplitter

我正在使用WPF应用程序。我的问题是关于GridSplitter的可见性。

在我的xaml代码中,我正在维护一个网格。在Grid的第3行,我正在托管一个Winform DataGridView。在同一行中,GridSplitter被写入。

拖动GridSplitter以调整网格行大小,对于其他控件(如按钮等),它是正确可见的。 但当它来到我托管的DataGridView时,GridSplitter隐藏在托管控件之后。

事实上,无论我托管什么而不是Datagridview,都会在拖动GridSplitter后隐藏它。

我尝试为GridSplitter设置ZIndex。它没有任何区别。

任何人都可以帮我吗?

以下是我的XAML示例代码: -

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Name="rowForButton"/>
        <RowDefinition Name="rowForGridSplitter" Height="Auto" MinHeight="81" />
    </Grid.RowDefinitions>
    <Button Grid.Row="0" Height="50" Width="110" Content="Button in First Row"/>
    <my:WindowsFormsHost Panel.ZIndex="0" Grid.Row="1"  Margin="30,11,138,0" x:Name="winHost" Height="58" VerticalAlignment="Top" OpacityMask="Transparent">            
        <win:DataGridView x:Name="dataGridView"></win:DataGridView>
    </my:WindowsFormsHost>        
    <GridSplitter  BorderThickness="1" Panel.ZIndex="1" Grid.Row="1" HorizontalAlignment="Stretch" Height="5" ShowsPreview="True" VerticalAlignment="Top">
    </GridSplitter>
</Grid>

感谢。

2 个答案:

答案 0 :(得分:0)

不幸的是,WinForms控件将始终位于WPF元素的顶部,当您尝试滚动它时它也会这样做。解决它的最佳方法是将所需的逻辑调整/滚动/无论WinForms部分放入WinForms控件,然后以WPF格式托管该控件。

答案 1 :(得分:0)

您的网格只有2个行定义但需要3.目前WindowsFormsHost和GridSplitter共享第二行(即Grid.Row =“1”)。大概你希望WindowsFormsHost使用Grid.Row =“2”。