2013-11-15 2 views
0

여러 개의 버튼/텍스트 상자가있는 창이 있습니다. 그들은 키보드가키보드 포커스 스타일 트리거

<Trigger Property="IsMouseOver" Value="True"> 
    <Setter Property="Background" Value="{StaticResource BasicBrush}" /> 
</Trigger> 

유사한 초점받을 때 윈도우가 나는 스타일 컨트롤을 시각적으로 할 수있는 방법을 원하는을 탭하면 내가 거기 유사한 IsKeyboardFocus 또는 것 그러나 그것을 찾을 수 없습니다 생각했다. 누구든지 코드 숨김에서 이벤트를 처리하지 않고이를 수행하는 방법을 알고 있습니까?

+0

FocusVisualStyle 속성을 설정하는 것이 좋습니다. –

답변

3

브라이언이 의견에서 제안했듯이 FrameworkElement.FocusVisualStyle property을 찾고있는 것처럼 들립니다. 이렇게하면 Style을 지정할 수 있습니다. 실제로는 에 있어야하는 내용이 현재 포커스가있는 컨트롤에 적용되도록 지정하는 ControlTemplate을 정의하는 것이 유일한 목적입니다. 각이 신청 한 제어에 초점을 맞춘 주위에이 Style 빨간색 Rectangle를 추가

<Style x:Key="MyFocusVisual"> 
    <Setter Property="Control.Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <Rectangle Margin="-2" StrokeThickness="1" Stroke="Red" 
        StrokeDashArray="1 2"/> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

: 다음은 MSDN에 링크 된 페이지에서 가져온 간단한 예입니다.

+0

'FocusVisualStyle'은 키보드 탐색을 통해 얻은 포커스에서만 작동합니다. 마우스를 사용하거나 코드에서 설정하면이 스타일이 사용되지 않습니다. [MSDN에서] (http://msdn.microsoft.com/en-us/library/bb613567(v=vs.110) .aspx)'마우스 동작이나 프로그래밍 방식의 포커스 변경으로 포커스 비주얼 스타일 모드가 비활성화됩니다. ' – cod3monk3y

+0

좀 더 자세하게 말하자면, "포커스 비주얼 스타일은 키보드 포커스에만 적용됩니다. 따라서 포커스 비주얼 스타일은 접근성 기능의 일종입니다. 마우스, 키보드 또는 프로그래밍 방식으로 포커스 유형에 따라 UI를 변경하려면 포커스 비주얼 스타일을 사용해서는 안되며 대신 IsFocused 나 IsFocusWithin과 같은 일반적인 포커스 속성의 값에서 작동하는 스타일이나 템플릿에서 세터와 트리거를 사용해야합니다. "" – cod3monk3y