我有一个包含Label和TextBox的UserControl。两者都放在一个放置在边框中的堆叠板内。
我现在想要在鼠标点击堆栈面板或边框内部时点击事件。我尝试了几件事,比如使用透明背景,不同的事件,如ismousedirectlyover等。
我有办法解决这个问题吗?
答案 0 :(得分:3)
您可以尝试捕获文本框,标签和堆栈面板中的mousedown事件,并将它们直接绑定到同一方法,您将始终独立于您单击的位置获取mousedown事件。 您也可以尝试设置
Panel.Zindex
在stackpanel中将属性设置为更高的数字,然后仅捕获其上的mousedown事件。
答案 1 :(得分:0)
1)将MouseLeftButtonDown
的处理程序添加到边框:
<Border MouseLeftButtonDown="Border_MouseLeftButtonDown">
<StackPanel Background="Transparent">
<TextBox x:Name="Text" />
</StackPanel>
</Border>
2)手动将焦点设置为TextBox
:
private void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Text.Focus();
}
确保将stackpanel的背景设置为透明。