2012-11-07 68 views
0

我有以下XAML覆盖绑定值/ WPF

<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的伟大工程的前景设置为暗红色,但设置进度条到100的值不起作用。我猜是因为{绑定进度}覆盖了它?

我该如何解决这个问题?

回答

0

你说得对,{Binding Progress}覆盖它。在Dependency Property order of precedence中,本地值具有第三高的优先级,而风格触发器是第六。

3)当地价值。可通过“包装器”属性的方便性来设置本地值,该属性也等同于在XAML中设置为属性或属性元素,或者使用特定实例的属性调用SetValue API。如果通过使用绑定或资源设置本地值,则这些值都按照优先级进行操作,就像设置了直接值一样。

....

6)样式触发器。页面或应用程序中的样式中的触发器(这些样式可以是显式样式或隐式样式,但不是默认样式,它们的优先级较低)。

+0

谢谢您的回复。但是,你知道这是一个好的/通用的解决方案吗? –

+0

@ user45763这取决于...你只是想设置默认值/初始值?如果是这样,那么一个好的解决方案就是在你的视图模型中设置“Progress = 100”。 – McGarnagle