TextBox 已获得焦点,但在单击之前无法键入 - XAML/C#/WPF

问题描述 投票:0回答:3

我有一个有趣的情况,我使用以下方法将焦点设置在搜索框上:

FocusManager.FocusedElement="{Binding ElementName=SearchBox}"
,我在这里找到:将焦点设置在xaml wpf中的文本框上

好处是搜索框实际上是聚焦的(我有一个触发器可以在焦点上执行操作),但在单击文本框之前我无法在文本框中输入内容。

我的文本框非常基本:

<TextBox x:Name="SearchBox"
         Grid.Row="0"
         style="{StaticResource SearchBox}" />

知道如何让用户在打开控件时立即输入吗?

c# wpf xaml
3个回答
6
投票

请参阅以下链接: https://learn.microsoft.com/en-us/dotnet/api/system.windows.input.focusmanager.focusedelement?redirectedfrom=MSDN&view=netframework-4.7.2#System_Windows_Input_FocusManager_FocusedElement

特别是备注:

FocusedElement 是具有特定焦点范围的逻辑焦点的元素。 该对象可能有也可能没有键盘焦点。键盘焦点是指接收键盘输入的元素。有关焦点、键盘焦点和逻辑焦点的更多信息,请参阅输入概述。

并且: https://learn.microsoft.com/en-us/dotnet/api/system.windows.input.focusmanager?redirectedfrom=MSDN&view=netframework-4.7.2

具有逻辑焦点的元素不一定有键盘 焦点,但具有键盘焦点的元素将具有逻辑焦点。它 可以在焦点范围内定义焦点范围。在这个 在这种情况下,父焦点范围和子焦点范围都可以有 FocusManager.FocusedElement

在下面的文章中,您将找到如何处理此问题的示例: https://stackoverflow.com/a/20299923/9295125


0
投票

您还可以将其与 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>

0
投票

有同样的问题。

Keyboard.Focus(uIElement);
没有解决问题。我的对话框窗口中有一个 TextBox ,它已获得焦点,但我无法输入内容。通过在事件
Loaded
上调用对话框窗口 .xaml.cs 中的 Activate(); 解决了这个问题。看起来像这样:

public DialogWindowView()
{
    Loaded += Window_Loaded;
    InitializeComponent();
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    this.Activate();
}
© www.soinside.com 2019 - 2024. All rights reserved.