4

ある種のベース エキスパンダー スタイルを作成し、派生スタイルでヘッダーの背景色をオーバーライドすることは可能ですか? 私のアプリケーションでは、エキスパンダーを頻繁に使用しており、ヘッダーの背景色を変更したいと考えています。スタイルをコピーして貼り付けて色を編集できることはわかっていますが、「基本スタイル」に基づいて新しいスタイルを作成し、ヘッダーの背景色を設定する方がよいでしょう。しかし、この色にアクセスする方法がわかりません。これは、この行の色です: 変更したい下 (ヘッダーの境界線): Border Name="border"... 派生スタイルのセッターで "border" にアクセスできません...

これは私の(ベース)スタイルです:

<Style TargetType="Expander" x:Key="ExpanderStyle">
    <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/>
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextColor}}"/>
    <Setter Property="Template">
        <Setter.Value>
            <!-- Control template for expander -->
            <ControlTemplate TargetType="Expander" x:Name="exp">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Name="ContentRow" Height="0"/>
                    </Grid.RowDefinitions>
                    <Border Name="border" Grid.Row="0" Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" BorderThickness="1" CornerRadius="4,4,0,0" >
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="20" />
                            </Grid.ColumnDefinitions>
                            <ToggleButton x:Name="tb" FontFamily="Marlett" FontSize="9.75" Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" Foreground="Black" Grid.Column="1" Content="u" IsChecked="{Binding Path=IsExpanded,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}" />
                            <ContentPresenter x:Name="HeaderContent" Grid.Column="0" Margin="4" ContentSource="Header" RecognizesAccessKey="True" />
                        </Grid>
                    </Border>
                    <Border x:Name="Content" Grid.Row="1" BorderThickness="1,0,1,1" CornerRadius="0,0,4,4" >
                        <ContentPresenter Margin="4" />
                    </Border>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsExpanded" Value="True">
                        <Setter TargetName="ContentRow" Property="Height" Value="{Binding ElementName=Content,Path=Height}" />
                        <Setter Property="Content" TargetName="tb" Value="t"></Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

私はこのようなことをしたいと思います:

<Style x:Key="ExpanderStyleRed" BasedOn="{StaticResource ExpanderStyle}" TargetType="Expander">
            <Setter Property="???" Value="Red"/>
<Style>
4

1 に答える 1

4

使用TemplateBinding:

        <Style TargetType="Expander" x:Key="ExpanderStyle">
        <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/>
        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextColor}}"/>
        <Setter Property="Template">
            <Setter.Value>
                <!-- Control template for expander -->
                <ControlTemplate TargetType="Expander" x:Name="exp">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Name="ContentRow" Height="0"/>
                        </Grid.RowDefinitions>
                        <Border Name="border" Grid.Row="0" Background="{TemplateBinding Background}" BorderThickness="1" CornerRadius="4,4,0,0" >
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="20" />
                                </Grid.ColumnDefinitions>
                                <ToggleButton x:Name="tb" FontFamily="Marlett" FontSize="9.75" Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" Foreground="Black" Grid.Column="1" Content="u" IsChecked="{Binding Path=IsExpanded,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}" />
                                <ContentPresenter x:Name="HeaderContent" Grid.Column="0" Margin="4" ContentSource="Header" RecognizesAccessKey="True" />
                            </Grid>
                        </Border>
                        <Border x:Name="Content" Grid.Row="1" BorderThickness="1,0,1,1" CornerRadius="0,0,4,4" >
                            <ContentPresenter Margin="4" />
                        </Border>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsExpanded" Value="True">
                            <Setter TargetName="ContentRow" Property="Height" Value="{Binding ElementName=Content,Path=Height}" />
                            <Setter Property="Content" TargetName="tb" Value="t"></Setter>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style x:Key="ExpanderStyleRed" BasedOn="{StaticResource ExpanderStyle}" TargetType="Expander">
        <Setter Property="Background" Value="#2fff0000"/>
    </Style>

その後:

    <Grid>

    <Expander x:Name="expander1" Style="{DynamicResource ExpanderStyle}" Header="Expander" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="7,10,0,0" Height="108">
        <TextBlock Width="250" Height="150" TextWrapping="Wrap">
            asklsaklsa saaskklsaklas alsaklalkjd
            asklsaklsaklsa saklsaklsakl jsajkjska
            saklsaklsakl sasa
        </TextBlock>
    </Expander>

    <Expander x:Name="expander2" Style="{DynamicResource ExpanderStyleRed}" Header="Expander" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="12,126,0,0" Height="133">
        <TextBlock Width="250" Height="150" TextWrapping="Wrap">
            asklsaklsa saaskklsaklas alsaklalkjd
            asklsaklsaklsa saklsaklsakl jsajkjska
            saklsaklsakl sasa
        </TextBlock>
    </Expander>

</Grid>

ここに画像の説明を入力

于 2016-07-06T12:04:16.177 に答える