0

カスタム テンプレートでバインドされたプロパティを変更するにはどうすればよいですか?

ボタンのフォアグラウンドにバインドされたパス塗りつぶしを持つボタン:

<Button Style="{DynamicResource CustomButtonStyle}"Foreground="White" >
   <Path Data="PATH_DATA" Stretch="Uniform" Fill="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" ></Path>
</Button>

オーバーライド テンプレートを使用したカスタム スタイルは次のとおりです。

<Style x:Key="CustomButtonStyle" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="{x:Null}"/>
        <Setter Property="BorderBrush" Value="White"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                        <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Foreground" Value="#d5113f"/>
                        </Trigger>
                        <Trigger Property="IsPressed" Value="True">    
                            <Setter Property="Foreground" Value="#d5113f"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

ただし、トリガーでフォアグラウンドを変更する

<Setter Property="Foreground" Value="#d5113f"/>

何もしません

4

1 に答える 1

2

Dependency Property Setting Precedence ListForegroundに従って固定値に設定したため、スタイル トリガーはこの値をオーバーライドしません。次のように、セットを別のセッターとして取り込む必要があります。ForegroundStyle

<Style x:Key="CustomButtonStyle" TargetType="{x:Type Button}">
   <Setter Property="Foreground" Value="White"/>
   ...
</Style>
于 2013-06-25T11:04:10.113 に答える