Деактивируйте FocusVisualStyle глобально

.class {
    background-color:none;
}

Это недопустимое свойство. Валидатор W3C отобразит следующую ошибку:

Значение Ошибка: фоновый цвет none не является значением background-color: none

transparent, возможно, был выбран как лучший термин вместо значений 0 или none при разработке спецификации CSS.

19
задан grayscales 28 June 2009 в 20:25
поделиться

5 ответов

Вы можете использовать OverrideMetadata:

FrameworkElement.FocusVisualStyleProperty.OverrideMetadata(
    typeof(FrameworkElement),
    new FrameworkPropertyMetadata(null));
  1. вы должны вызвать это до создания любого элемента, событие Application.Startup, вероятно, лучшее место.
  2. Это повлияет только на элементы управления, которые используют Визуальный стиль фокуса FrameworkElement и не будет изменять элементы управления, которые переопределяют его в коде или стилях.
  3. Я сам не пробовал делать это с FocusVisualStyle
0
ответ дан 30 November 2019 в 05:18
поделиться

Это может быть непросто, но вы можете написать функцию, которая изменяет существующий стиль контроля. Как только это будет написано, вы можете написать функцию, рекурсивно изменяющую стиль каждого элемента.

0
ответ дан 30 November 2019 в 05:18
поделиться

Похоже, для этого не существует волшебной пули:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/141c8bfa-f152-4f8a- aca0-3c3b5440d183

3
ответ дан 30 November 2019 в 05:18
поделиться

Я знаю, что это звучит утомительно, но вам, вероятно, придется делать то же самое для всех другие типы управления - индивидуально. Однако составление их списка и выполнение пары простых операций поиска / замены должны дать вам то, что вам нужно.

1
ответ дан 30 November 2019 в 05:18
поделиться

Согласно http://msdn.microsoft.com/en-us/library/bb613567.aspx , вы должны иметь возможность установить стиль глобального фокуса вот так:

<Style x:Key="{x:Static SystemParameters.FocusVisualStyleKey}">
  <Setter Property="Control.Template">
    <Setter.Value>
      <ControlTemplate>
        <Rectangle StrokeThickness="1"
          Stroke="Black"
          StrokeDashArray="1 2"
          SnapsToDevicePixels="true"/>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style> 

Я не тестировал его, но полагаю, что, когда вы очищаете шаблон элемента управления, это фактически отключит прямоугольник фокуса для всего приложения (при условии, что вы включите этот стиль в app.xaml).

3
ответ дан 30 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: