1

アプリケーション リソース内の XAML を次に示します。この XAML は、アプリケーション内のすべての Button コントロールを、希望どおりの外観と動作になるようにグローバルに変更します。

<Style TargetType="{x:Type Button}" x:Key="MyButtonStyle">
    <Setter Property="SnapsToDevicePixels" Value="true"/>
    <Setter Property="OverridesDefaultStyle" Value="true"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Border x:Name="Border" CornerRadius="0" BorderThickness="0" 
                            Background="CornflowerBlue" BorderBrush="CornflowerBlue">
                    <ContentPresenter Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" RecognizesAccessKey="True" />
                </Border>
                <ControlTemplate.Triggers>
                    <!-- a bunch o' triggers here -->
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

アプリケーションのユーザー コントロールの 1 つで、このボタンのいくつかのプロパティを変更したいと考えています。これを行うために UserControl.Resources セクションで使用している XAML を次に示します。

<Style x:Key="SpecialButton" TargetType="Button" BasedOn="{StaticResource MyButtonStyle}">
    <Setter Property="Width" Value="20" />
    <Setter Property="Visibility" Value="Collapsed" />
    <Setter Property="Content" Value=">" />
    <Setter Property="Border" Value="#eeeeee" />
    <Setter Property="Border.Background" Value="#eeeeee" />
</Style>

SpecialButton のスタイルを割り当てた UserControl の Button コントロールは、正しい幅、可視性、およびコンテンツを持っていますが、これらの最後の 2 つの試行は機能しません。この SpecialButton スタイルのアプリケーション リソースから「Border」という名前の Border の背景色を変更するにはどうすればよいですか?

4

1 に答える 1

2

できることはTemplateBinding、基本スタイルで、コントロールの Background プロパティを設定するために使用することです。また、基本スタイルで、背景色をデフォルトの「CornflowerBlue」に設定します。

<Setter Property="Background" Value="CornflowerBlue" />
<Setter Property="Template">
    <Setter.Value>    
        <ControlTemplate TargetType="{x:Type Button}">
            <Border x:Name="Border" Background="{TemplateBinding Background}"

これで、派生スタイルで Background を上書きできます。

<Style x:Key="SpecialButton" TargetType="Button" BasedOn="{StaticResource MyButtonStyle}">
    <Setter Property="Background" Value="#eeeeee" />

(注意してください、Button コントロールで定義されていない他のプロパティを使用したい場合、または複数の背景色を使用したい場合は、 を継承する独自のコントロールを作成しButton、依存関係プロパティとしての新しいプロパティ。)

于 2012-12-13T20:25:33.567 に答える