使网格行的命中测试可见属性不同

时间:2011-09-30 09:44:43

标签: wpf grid click hittest

我有一个包含3行的网格,其中一行包含可以编辑的TextBox。网格位于paretn内部,提供拖动功能以使其能够在画布周围移动。为了实现这一点,我需要将IsHitTestVisible设置为false,以便允许鼠标单击传递给父对象。

问题是,当我这样做时,我无法选择网格中的文本框,即使命中测试可见设置为True;

<Grid Background="{StaticResource NodeBackground}" IsHitTestVisible="True">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="2*"/>
                            <RowDefinition Height="1*"/>
                            <RowDefinition Height="2*"/>
                        </Grid.RowDefinitions>
                        <TextBox Text="{Binding Data}" Foreground="White" Background="Transparent" FontFamily="Consolas" FontSize="15" TextAlignment="Center" Grid.Row="1" BorderThickness="0" />
                    </Grid>

是否可以按行设置命中测试属性,因此如果两个空行中的任何一个被命中,它们将继续将点击传递到父容器,但仍然可以选择文本框在中间一行?

干杯。

1 个答案:

答案 0 :(得分:0)

我不确定您的拖放代码,但也许您可以使用触发器,IsHitTestVisible只有在拖动项目时False,其余时间才为真

作为旁注,我过去曾遇到过使用WPF内置DragDrop功能和热门测试的问题。我发现使用MouseEvents更简单,例如跟踪MouseEnter / MouseLeave事件进行拖动