【问题标题】:Make hit test visible property different for grid rows使网格行的命中测试可见属性不同
【发布时间】:2011-09-30 09:44:42
【问题描述】:

我有一个包含 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>

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

干杯。

【问题讨论】:

  • 为什么需要IsHitTestVisible?凭借events bubbling,您的Grid 的父级将获得所有未被TextBox 处理的Grid 鼠标事件。我错过了什么吗?
  • 分享你的拖放逻辑。因为通常这应该像你期望的那样工作,就像@alpha-mouse 说的那样。

标签: wpf grid click hittest


【解决方案1】:

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

附带说明,我过去在使用 WPF 的内置 DragDrop 功能和命中测试时遇到过问题。我发现改用 MouseEvents 更简单,例如跟踪 MouseEnter/MouseLeave 拖动事件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    相关资源
    最近更新 更多