0

セパレーターの場合、MenuItemに含まれているこれだけを変更することができます。そのため、私は使用しなければなりませんでした:

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

menuitemとRadioButtonにこのようなものはありますか?もう1つの問題は、これがWindows7でのみ正しく機能し、WindowsXPでは正しく機能しないことです。後でコード全体を投稿しますが、キーで区切り文字を指定する必要はありませんでした。それはそう動作します-windows7の下で。Windows XPでは色がに変更されますが、奇妙な透明な境界線はセパレータ全体についてです。しかし、セパレーターコントロールテンプレートの色で塗りつぶすために描画する境界線は1つだけで、2つではありません。

MenuItemの子「stylekey」をどこかに見つけることができますか?vsはこの時点で知性を持っていません。

4

1 に答える 1

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 の問題は、デフォルトのスタイルをオーバーライドしていないことでした。

ラジオボタンとチェックボックスを備えた他の質問は常にそこにあります

もう 1 つの問題は、グリッドの背景のデフォルト スタイルをオーバーライドしなければならなかったことです。グリッドの背景に色で線を引き、デフォルトのコンテンツを含める必要がありました。各ウィンドウで行を手動で追加するのではなく、アプリケーションの各ウィンドウで同じ位置に配置する必要があります。

しかし、線は線のみで、ウィンドウ全体を埋める必要はありません。ウィンドウの幅と高さはわかりません。を使用できますか?例はありますか?

于 2012-08-08T07:17:13.133 に答える