我有一个消息,这是一个边界内,并显示在MDI客户区的前面。 因为它只是一个消息,我设置它的IsHitTestVisible
为false。 为方便起见,我还包括在一个按钮,使用户只需按一下按钮,开始一个新的图表。
然而,由于边界有其IsHitTestVisible
设置为False
时,短出了True
按钮的值,使用户无法点击按钮。
这就是说,你怎么能不可见的鼠标控制,同时仍然允许它的一个子接收鼠标事件?
下面是截图:
我们希望与文本的蓝色区域中点击测试看不见的,但我们希望按钮仍然能够被按下。 思考? (是的,我已经知道在网格叠加的两个项目,但与布局弄乱。
好吧,看起来并不像这个问题是可以解决的要求,因此看起来我们必须恢复到分层的方法。 在这种情况下,为了弥补文字的变化,你必须设置按钮底部垂直对齐,并确保有上TextBlock的边界或底部边缘的底部边缘微胖),以确保标签总是漂浮以上按钮。 您管理两个使用相同的原则侧边缘/填充。
这会给我们带来什么我们之后,只是似乎很繁琐。 同样,我希望有一些方法来与“力”在某种程度上是重新建立它们(及以下)作为行为的拥有者指定IsHitTestVisible(或的IsEnabled为此事)。 一个人可以梦想。 在此之前...层啊!
据我所知,你不能。 你可以用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>
免责声明:看起来它不会解决具体问题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?