wpf - 在不破坏 ControlTemplate 的情况下将 setter 添加到 Contro

我有进度条的全局模板,但在其中一个我必须将它的颜色绑定(bind)到另一个元素的状态。似乎如果我更改 ProgressBar 的样式,它就会丢失 ControlTemplate。我在这里缺少什么?

<Style TargetType="ProgressBar">           
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="ProgressBar">
            <Border Name="PART_Track" ... Background="{TemplateBinding Background}"  >
                <Rectangle Name="PART_Indicator" ... Fill="{TemplateBinding Foreground}" />
            </Border>
        </ControlTemplate>
    </Setter.Value>
</Setter>

<ProgressBar x:Name="PBar" Background="#d8d8d8">
<ProgressBar.Resources>
    <Style TargetType="{x:Type ProgressBar}" >
        <Setter Property="Foreground" Value="#6CC655"/>
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsChecked, ElementName=toggleX, Mode=OneWay}" Value="True">
                <Setter Property="Foreground" Value="#FFFFFF"/>
            </DataTrigger>
        </Style.Triggers>-->
    </Style>
</ProgressBar.Resources>

最佳答案

您可以使用 BasedOn继承默认样式。这样您将获得以基本样式定义的所有属性,包括 ControlTemplate:

<ProgressBar.Resources>
    <Style TargetType="{x:Type ProgressBar}"
           BasedOn="{StaticResource {x:Type ProgressBar}}">
    ....
</ProgressBar.Resources>

关于wpf - 在不破坏 ControlTemplate 的情况下将 setter 添加到 Control 的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22438326/

相关文章:

google-chrome-extension - 我可以在我的网站上有一个 chrome 扩展的安

php - 在尝试使用 phpseclib 创建 SFTP 目录之前检查它是否存在

sql - 有没有办法删除已经绑定(bind)到存储过程的用户定义表类型?

django - @login_required 和 is_authenticated() -- 在

google-maps-api-3 - 地理距离 : Wolfram Alpha not agree

cartopy - 在 cartopy 轴之间画线

sapui5 - 禁用诊断工具快捷键

authentication - oAuth 2.0 - 代表用户行事

version-control - Mercurial : Change root of named

django - Django 中的弱实体