单击标签以将另一个控件聚焦在WPF中

Sha*_*owe 13 c# wpf xaml label click

我从WPF休息了大约一年,我对这个简单的问题感到困惑.我发誓有一种简单的方法可以告诉标签在点击时将注意力集中在另一个控件上.

 <StackPanel>
    <Label Target="TextBox1">Label Text</Label>
    <TextBox Name="TextBox1" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

当用户点击"标签文本"时,我希望TextBox获得焦点.这可能吗?

H.B*_*.B. 15

您应该使用Target属性:

<Label Content="_Stuff:" Target="{x:Reference TextBox1}"
       MouseLeftButtonUp="Label_MouseLeftButtonUp"/>
<TextBox Name="TextBox1" />
Run Code Online (Sandbox Code Playgroud)
private void Label_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (e.ClickCount == 1) //Note that this is a lie, this does not check for a "real" click
    {
        var label = (Label)sender;
        Keyboard.Focus(label.Target);
    }
}
Run Code Online (Sandbox Code Playgroud)

首先使用Label而不是TextBlock的关键是使用它的关联功能,请参阅MSDN上参考.

关于我的笔记,我问了一个关于如何在这里获得真正点击的问题,如果你很好奇的话.