单击stackpanel的背景时如何获得焦点?

时间:2014-02-11 15:55:27

标签: c# wpf focus

我有一个包含Label和TextBox的UserControl。两者都放在一个放置在边框中的堆叠板内。

我现在想要在鼠标点击堆栈面板或边框内部时点击事件。我尝试了几件事,比如使用透明背景,不同的事件,如ismousedirectlyover等。

我有办法解决这个问题吗?

2 个答案:

答案 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的背景设置为透明。