0

我有以下 XAML

<ProgressBar Grid.Column="0" Grid.Row="0" Margin="0,1" Minimum="0" Maximum="100" Value="{Binding Progress}">
    <ProgressBar.Resources>
        <Style TargetType="{x:Type ProgressBar}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding DidAllServicesRestart}" Value="False">
                    <Setter Property="Foreground" Value="DarkRed"/>
                    <Setter Property="Value" Value="100"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ProgressBar.Resources>
</ProgressBar>

DataTrigger 非常适合将 Foreground 设置为 DarkRed,但将进度条的值设置为 100 不起作用。我猜是因为 {Binding Progress} 覆盖了它?

我该如何解决这个问题?

4

1 回答 1

0

你是对的,{Binding Progress}覆盖它。在Dependency Property 的优先级顺序中,本地值具有第三高优先级,而样式触发器是第六位。

3)当地价值。可以通过“包装器”属性的便利设置本地值,这也等同于在 XAML 中设置为属性或属性元素,或者通过使用特定实例的属性调用 SetValue API。如果您通过使用绑定或资源设置本地值,则它们各自的优先级就像设置了直接值一样。

……

6)风格触发器。来自页面或应用程序的样式中的触发器(这些样式可能是显式或隐式样式,但不是来自具有较低优先级的默认样式)。

于 2012-11-08T00:09:18.423 回答