我遇到了一个问题,在Silverlight事件中,按钮和hyperlinkButton的MouseLeftButtonDown不会被触发。看起来它是在框架中的某个地方处理的。如何重写此行为
在下面的XAML代码中,当我单击名为Cancel的按钮时,不会触发Button_MouseLeftButtonDown。我试着把文本块放在按钮里,当我点击按钮上的文本时,MouseLeftButtonDown就起作用了,但它不会冒泡到框架上
<Button Name="Cancel" ClickMode="Release" MouseLeftButtonDown="Button_MouseLeftButtonDown">
<Button.Content>
<TextBlock Name="CancelInnerText" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown">Clone Page</TextBlock>
</Button.Content>
发布于 2009-12-10 03:48:46
让它工作,必须设置按钮的ClickMode=“悬停”。现在,MouseLeftButtonDown事件正在触发,并且还在冒泡
发布于 2009-12-10 03:21:21
是啊,我不知道你来这里是为了什么。这是某种奇怪的情况,还是你只是想要一个按钮,当你点击它时,它会触发一个事件?
如果这只是一个普通的按钮,你通常会使用默认行为:
<Button Name="Cancel" Click="Button_Click">
<Button.Content>
<TextBlock>Clone Page</TextBlock>
</Button.Content>
</Button>发布于 2011-04-14 11:36:04
你不是认真的吧!如果用户触摸大型表单上的cancel按钮,会发生什么情况?只需触发连接到取消按钮的内容??
魔力来自于控制,与焦点机制有关。它会将所有事件重定向到焦点元素(在框架深层的静态类中)。在mousebuttondown上,这个焦点是通过base.Focus()设置的;
所以:只需覆盖MouseLeftButtonDown并设置焦点,一切都会正常工作。
可以放置在按钮(或按钮模板)中的控件示例:
public class InAction : ContentControl
{
public InAction()
{
this.DefaultStyleKey = typeof(InAction);
this.MouseLeftButtonDown += new MouseButtonEventHandler(InAction_MouseLeftButtonDown);
}
void InAction_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
base.Focus();
}
}https://stackoverflow.com/questions/1876135
复制相似问题