2012-11-07 66 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