2010-10-21 48 views
2

我正在使用样式表的WPF。在我的Style中,我一直在尝试定制CheckBox的虚线焦点边框的外观。我需要的焦点边界只能围绕广场而不是整个控制。WPF复选框样式使焦点边界表现不佳

我将我的样式宽度设置为15,并且虚线边框是正确的,但不包围正方形,它的边到边。

我已经包括了风格。

感谢您的帮助。

样式表片段:

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

回答

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

感谢您的帮助! – SetiSeeker 2010-10-21 12:22:00

+0

不客气:) – 2010-10-21 12:25:11

0

混合使用或使用的XamlWriter之一的techniques shown here得到CheckBox的控件模板。

看看“方形”是如何以及在哪里定义的 - 我相信你会看到它有一个边距和/或填充和/或其他格式应用于它。

在这一点上,您可以使用该信息来实现您的风格。从你的代码片段不清楚你是否实际上实现了CheckBox的ControlTemplate,但这可能是最简单的。

哦,和FYI - 在WPF中,它们被称为ResourceDictionaries,而不是样式表。