Стиль флажка WPF делает границы фокуса странными - PullRequest
2 голосов
/ 21 октября 2010

Я использую WPF с таблицей стилей. В моем Style я пытался настроить внешний вид пунктирной границы фокуса для CheckBox. Мне нужна рамка фокуса, чтобы нарисовать только квадрат, а не весь элемент управления.

Я установил ширину моего стиля на 15, и пунктирная граница верна, но не окружает квадрат, а смещен в сторону.

Я включил стиль.

спасибо за помощь.

Фрагмент таблицы стилей:

<Setter Property="Control.Template">
    <Setter.Value>
        <ControlTemplate>
            <Rectangle StrokeThickness="1" Stroke="Black"  StrokeDashArray="1 2" SnapsToDevicePixels="true" Width="15"/>
        </ControlTemplate>
    </Setter.Value>
</Setter>

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Не сильно изменился, но я думаю, что все выглядит хорошо

<Style x:Key="MyFocusVisual">
    <Setter Property="Control.Template">
        <Setter.Value>
            <ControlTemplate>
                <Rectangle StrokeThickness="1" Margin="-1,1,-1,1" Stroke="Black" HorizontalAlignment="Left" StrokeDashArray="1 2" SnapsToDevicePixels="true" Width="15"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

<Canvas>
    <CheckBox Canvas.Left="100" Canvas.Top="100" TabIndex="0" Content="Content1" FocusVisualStyle="{DynamicResource MyFocusVisual}"/>
    <CheckBox Canvas.Left="100" Canvas.Top="120" TabIndex="1" Content="Content2" FocusVisualStyle="{DynamicResource MyFocusVisual}"/>
</Canvas>
0 голосов
/ 21 октября 2010

Используйте Blend или XAMLWriter, используя одну из техник , показанных здесь , чтобы получить ControlTemplate CheckBox.

Посмотрите, как и где определяется «квадрат» - я уверен, чтовы увидите, что к нему применены поля и / или отступы, и / или другое форматирование.

На этом этапе вы можете использовать эту информацию для реализации вашего стиля.Из вашего фрагмента неясно, реализуете ли вы ControlTemplate CheckBox, но это может быть проще всего.

Oh, и FYI - в WPF они называются ResourceDictionaries, а не таблицы стилей.

...