2

我正在使用带有样式表的 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>
4

2 回答 2

1

变化不大,但我觉得还可以

<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>
于 2010-10-21T11:20:00.660 回答
0

使用此处显示的技术之一使用 Blend 或 XAMLWriter来获取 CheckBox 的 ControlTemplate。

看看“正方形”的定义方式和位置 - 我相信您会看到它有边距和/或填充和/或其他格式应用于它。

此时,您可以使用该信息来实现您的样式。如果您实际上是在实现 CheckBox 的 ControlTemplate,则从您的代码段中不清楚,但这可能是最简单的。

哦,仅供参考 - 在 WPF 中,它们被称为 ResourceDictionaries,而不是样式表。

于 2010-10-21T11:12:04.297 回答