-->

你怎么能设置IsHitTestVisible为True的东西子女,它设置为false?(How ca

2019-07-31 04:50发布

我有一个消息,这是一个边界内,并显示在MDI客户区的前面。 因为它只是一个消息,我设置它的IsHitTestVisible为false。 为方便起见,我还包括在一个按钮,使用户只需按一下按钮,开始一个新的图表。

然而,由于边界有其IsHitTestVisible设置为False时,短出了True按钮的值,使用户无法点击按钮。

这就是说,你怎么能不可见的鼠标控制,同时仍然允许它的一个子接收鼠标事件?

下面是截图:

我们希望与文本的蓝色区域中点击测试看不见的,但我们希望按钮仍然能够被按下。 思考? (是的,我已经知道在网格叠加的两个项目,但与布局弄乱。

Answer 1:

好吧,看起来并不像这个问题是可以解决的要求,因此看起来我们必须恢复到分层的方法。 在这种情况下,为了弥补文字的变化,你必须设置按钮底部垂直对齐,并确保有上TextBlock的边界或底部边缘的底部边缘微胖),以确保标签总是漂浮以上按钮。 您管理两个使用相同的原则侧边缘/填充。

这会给我们带来什么我们之后,只是似乎很繁琐。 同样,我希望有一些方法来与“力”在某种程度上是重新建立它们(及以下)作为行为的拥有者指定IsHitTestVisible(或的IsEnabled为此事)。 一个人可以梦想。 在此之前...层啊!



Answer 2:

据我所知,你不能。 你可以用IsEnabledProperty少许变通但是做到这一点,而且还。 你有这样的创建自己的按钮:

编辑2013年9月1日:

 public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        DataContext = this;
    }

    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("hello");
    }
}

public class MyButton : Button
{
    static MyButton()
    {
        IsEnabledProperty.OverrideMetadata(typeof(MyButton),
        new UIPropertyMetadata(true,(o, args) => { },(o, value) => value));
    }
}

XAML:

<BorderIsEnabled="False">
    <wpfApplication2:MyButton Margin="61,95,88,100" Click="ButtonBase_OnClick">Open a new diagram</wpfApplication2:MyButton>
</Border>


Answer 3:

免责声明:看起来它不会解决具体问题OP有,但我会继续在这里,因为它可能是其他人有类似的问题很有帮助。

点击电网不应该登记在网上的任何鼠标事件。

<Grid Background="{x:Null}">
   <Button/>
<Grid/>

编辑:当你想要的背景是分享范围,那么我建议这样的:我笔画演示边境上设置光标=“牵手”

<Canvas>
    <Border Height="300" Width="300" Background="Red" Cursor="Hand" IsHitTestVisible="False"/>
    <Button Content="click"/>
</Canvas>

要么

<Grid>
    <Border  Background="Red" Cursor="Hand" IsHitTestVisible="False" />
    <Button Content="click" HorizontalAlignment="Center"/>
</Grid>

这两种情况下,诀窍在于控制(按钮)不符合IsHitTestVisible =“假”父母的孩子,它只是overlaping后台控制



文章来源: How can you set IsHitTestVisible to True on a child of something where it's set to false?