0

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

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

当拖动 GridSplitter 以调整 Grid Row 大小时,对于其他控件(如 Buttons 等),它是正确可见的。但是当涉及到我托管的 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>

谢谢。

4

2 回答 2

0

不幸的是,WinForms 控件将始终位于您的 WPF 元素之上,当您尝试滚动它时它也会这样做。解决它的最佳方法是将大小/滚动/WinForms 部分所需的逻辑放入 WinForms 控件,然后将该控件托管在 WPF 表单中。

于 2009-04-06T07:57:36.563 回答
0

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

于 2010-10-12T19:55:14.003 回答