2014-01-17 1 views
0

다음 예제에서는 내 문제가 재현됩니다. 간단한 WPF 창 텍스트 'TEST2'텍스트 'TEST1' ToolBar의 TextBox를 클릭해도 ToolBar에서 TextBox의 텍스트 커서가 제거되지 않습니다.

  • TextBox1에 텍스트 커서를 가지고와 (정상 상태)을 깜박이와 텍스트 상자에
  • 클릭으로 텍스트 상자에

    <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. 을 클릭합니다. 그러나 텍스트 커서도 textbox2에 머물러 있었고 깜박이지 않습니다. 이상하게 보입니다.

    텍스트 상자에서 텍스트 커서를 제거하지 않은 이유는 무엇입니까? 이 경우, 또는보다 구체적으로는 포커스 범위에 그것이 속하는 곳

    Result

  • 답변

    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

    1

    이 WPF에서 정상 동작되고 ... 이상의 제어에 따라, 한 번에 논리적 포커스를 가질 수있다. 반대로 한 번에 하나의 컨트롤 만 키보드 포커스를 가질 수 있습니다. 예를 들어 논리적 인 초점을 선택한 MenuItem에 그대로 두는 것이 합당합니다. 반면에 논리 키보드 포커스는 ListBox에서 선택한 항목을 강조 표시 할 수 있습니다.

    MSDN의 Focus Overview 페이지에서 전체 내용을 찾을 수 있습니다. 연결된 페이지에서 :

    논리적 초점은 포커스 범위의 FocusManager.FocusedElement를 참조합니다. 포커스 범위는 해당 범위 내에서 FocusedElement를 추적하는 요소입니다. 키보드 포커스가 포커스 범위를 벗어나면 포커스가있는 요소는 키보드 포커스를 잃지 만 논리적 포커스는 유지됩니다. 키보드 포커스가 포커스 범위로 돌아 오면 포커스가있는 요소는 키보드 포커스를 얻습니다. 이렇게하면 여러 포커스 범위 사이에서 키보드 포커스를 변경할 수 있지만 포커스 범위로 포커스가 되돌아 가면 포커스 범위의 포커스 요소가 키보드 포커스를 다시 확보합니다.

    관련 문제