我有一个有趣的情况,我使用以下方法将焦点设置在搜索框上:
FocusManager.FocusedElement="{Binding ElementName=SearchBox}"
,我在这里找到:将焦点设置在xaml wpf中的文本框上
好处是搜索框实际上是聚焦的(我有一个触发器可以在焦点上执行操作),但在单击文本框之前我无法在文本框中输入内容。
我的文本框非常基本:
<TextBox x:Name="SearchBox"
Grid.Row="0"
style="{StaticResource SearchBox}" />
知道如何让用户在打开控件时立即输入吗?
特别是备注:
FocusedElement 是具有特定焦点范围的逻辑焦点的元素。 该对象可能有也可能没有键盘焦点。键盘焦点是指接收键盘输入的元素。有关焦点、键盘焦点和逻辑焦点的更多信息,请参阅输入概述。
具有逻辑焦点的元素不一定有键盘 焦点,但具有键盘焦点的元素将具有逻辑焦点。它 可以在焦点范围内定义焦点范围。在这个 在这种情况下,父焦点范围和子焦点范围都可以有 FocusManager.FocusedElement
在下面的文章中,您将找到如何处理此问题的示例: https://stackoverflow.com/a/20299923/9295125
您还可以将其与 xaml 页面的
<window>
标签一起使用
<Window x:Class="WpfApplication30.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
FocusManager.FocusedElement="{Binding ElementName=SearchBox}">
<StackPanel>
<TextBox x:Name="textBox1"/>
<TextBox x:Name="SearchBox"
style="{StaticResource SearchBox}" />
</StackPanel>
</Window>
有同样的问题。
Keyboard.Focus(uIElement);
没有解决问题。我的对话框窗口中有一个 TextBox ,它已获得焦点,但我无法输入内容。通过在事件 Loaded上调用对话框窗口 .xaml.cs 中的
Activate();
解决了这个问题。看起来像这样:
public DialogWindowView()
{
Loaded += Window_Loaded;
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Activate();
}