单击ToolBar中的TextBox不会从TextBar中删除TextBox中的文本光标

时间:2014-01-17 14:28:46

标签: wpf user-interface textbox focus toolbar

我的问题可以在以下示例中重现。简单的WPF窗口:

<Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Width="525"
        Height="350">
    <StackPanel>
        <ToolBar>
            <TextBox Name="textbox1"
                     Width="100"
                     Text="test1" />
        </ToolBar>
        <TextBox Name="textbox2"
                 Width="100"
                 Height="25"
                 HorizontalAlignment="Left"
                 Text="test2" />
    </StackPanel>
</Window>
  1. 点击带有文字'test2'
  2. 的TextBox
  3. 点击带有文字'test1'
  4. 的TextBox
  5. textbox1获得文本光标并闪烁(正常状态)。但文本光标也保留在textbox2中并且没有闪烁 - 这很奇怪。
  6. 为什么不从textbox2中删除文本光标?

    Result

2 个答案:

答案 0 :(得分:1)

这是WPF中的正常行为...多个控件可以同时具有逻辑焦点,具体取决于它的位置,或者更具体地说,取决于它所属的焦点范围。相反,一次只有一个控件可以具有键盘焦点。例如,将逻辑焦点保留在选定的MenuItem上是完全合法的,而在其他地方逻辑键盘焦点可以突出显示ListBox中的所选项目

您可以在MSDN上的Focus Overview页面中找到完整的故事。从链接页面:

  

逻辑焦点是指焦点范围内的FocusManager.FocusedElement。焦点范围是在其范围内跟踪FocusedElement的元素。当键盘焦点离开焦点范围时,聚焦元素将失去键盘焦点,但将保持逻辑焦点。当键盘焦点返回到焦点范围时,焦点元素将获得键盘焦点。这允许在多个聚焦范围之间改变键盘焦点,但确保当聚焦返回聚焦范围时聚焦范围中的聚焦元素重新获得键盘聚焦。

答案 1 :(得分:1)

试试这个

    <StackPanel FocusManager.IsFocusScope="True">
        <ToolBar>
            <TextBox Name="textbox1" Width="100" Text="test1" />
        </ToolBar>
        <TextBox Name="textbox2" Width="100" Height="25" HorizontalAlignment="Left" Text="test2" IsInactiveSelectionHighlightEnabled="True"/>
    </StackPanel>

了解更多详情visit