【发布时间】: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 说的那样。