【问题标题】:WPF Checkbox style making focus border behave stranglyWPF Checkbox 样式使焦点边框表现得很奇怪
【发布时间】:2010-10-21 10:41:43
【问题描述】:

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

【问题讨论】:

    标签: wpf focus styles resourcedictionary


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      使用 Blend 或 XAMLWriter 使用 techniques shown here 之一来获取 CheckBox 的 ControlTemplate。

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

      此时,您可以使用该信息来实现您的样式。从你的 sn-p 中不清楚你是否真的在实现 CheckBox 的 ControlTemplate,但这可能是最简单的。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-12
        相关资源
        最近更新 更多