仅更改MenuItem Radiobutton和Checkbox

时间:2012-08-07 20:48:45

标签: c# wpf xaml menuitem controltemplate

对于分隔符,可以仅更改此项,它包含在MenuItem中。 因此我不得不使用:

<Style TargetType="{x:Type Separator}" x:Key="{x:Static MenuItem.SeparatorStyleKey}">

有没有像menuitem和RadioButton这样的东西? 另一个问题是,这只能在windows7下正常工作,而不是在Windows XP下。 我稍后发布整个代码,但我没有用密钥指定分隔符。它的工作原理 - 在windows7下。在Windows XP上,颜色变为,但是一个奇怪的透明边框是关于整个分隔符。但我只绘制了一个边框,用我的分隔符控件模板中的颜色填充它而不是两个!

我可以找到孩子的某个地方 - “Stylekey”用于MenuItem吗? vs此时没有情报。

1 个答案:

答案 0 :(得分:0)

这是完整的代码:

<Style TargetType="{x:Type Separator}" x:Key="{x:Static MenuItem.SeparatorStyleKey}">
    <Setter Property="Background" Value="{Binding Path=Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Menu}}}"/>
    <Setter Property="Focusable" Value="false"/>
    <Setter Property="OverridesDefaultStyle" Value="True" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Separator}">
                    <Border Background="{TemplateBinding Background}"
                            SnapsToDevicePixels="True" 
                            Height="2"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

windows xp的问题是,我没有覆盖默认样式。

单选按钮和复选框的另一个问题始终存在

另一个问题是,我必须覆盖网格背景的默认样式。我不得不在网格的背景上画一条颜色并包含默认内容。 不应在每个窗口手动添加该行,应该在应用程序的每个窗口的相同位置。

但该行应该只是一行而不是填满整个窗口,我不知道窗口的宽度和高度。我可以使用吗?有什么例子吗?