2013-11-15 4 views
0

У меня есть окно с несколькими кнопками/текстовыми полями. Когда окно с вкладками через Я хочу способ визуально стиль элементов управления, когда они получают клавиатурный фокус похож наСтиль Trigger for Keyboard Focus

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

Я думал, что будет IsKeyboardFocus или подобное, но не могли найти его. Кто-нибудь знает способ сделать это без обработки событий в коде?

+0

Похоже, что настройка свойства FocusVisualStyle - это путь? –

ответ

3

Как пояснил Брайан в комментариях, похоже, что вы ищете FrameworkElement.FocusVisualStyle property. Это позволяет указать Style, единственной целью которого является определение ControlTemplate, который определяет, какой контент должен иметь Adorner, который применяется к элементам управления, которые в настоящее время имеют фокус. Вот краткий пример, взятый из связанной страницы на сайте MSDN:

<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> 

Style Это добавит красный Rectangle вокруг каждого сосредоточено управление, которое она применяется.

+0

Обратите внимание, что 'FocusVisualStyle' работает только для фокуса, полученного с помощью клавиатуры. Использование мыши или установка ее из кода не будут использовать этот стиль. [Из MSDN] (http://msdn.microsoft.com/en-us/library/bb613567 (v = vs.110) .aspx) 'Любое действие мыши или изменение программного фокуса отключает режим визуальных стилей фокуса.' – cod3monk3y

+0

И более подробно: «Фокусные визуальные стили действуют исключительно для фокуса клавиатуры. Таким образом, визуальные стили фокуса - это тип функции доступности. Если вы хотите, чтобы изменения пользовательского интерфейса для любого типа фокуса, будь то с помощью мыши, клавиатуры или программно, тогда вы не должны использовать фокусные визуальные стили и вместо этого должны использовать сеттеры и триггеры в стилях или шаблонах, которые работают от значения общих свойств фокусировки, таких как IsFocused или IsFocusWithin.' " – cod3monk3y