2012-11-07 7 views
0

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가 DarkRed에 전경을 설정하지만, 작동하지 않습니다 (100)에 진행 막대의 값을 설정하기위한 위대한 작품을 다음 XAML 있습니다. {Binding Progress}가 그것을 무시하기 때문에 나는 추측하고 있습니까?

어떻게 해결할 수 있습니까?

답변

0

{Binding Progress}이 우선합니다. Dependency Property order of precedence에서 로컬 값은 세 번째로 높은 우선 순위를 갖지만 스타일 트리거는 6 번째입니다.

3) 로컬 값. 로컬 값은 XAML에서 특성 또는 속성 요소로 설정하거나 특정 인스턴스의 속성을 사용하여 SetValue API를 호출하는 것과 동일한 "래퍼"속성을 사용하여 설정할 수 있습니다. 바인딩 또는 리소스를 사용하여 로컬 값을 설정하면 이들은 각각 직접 값이 설정된 것처럼 우선 순위에서 작동합니다.

....

6) 스타일 트리거. 페이지 또는 응용 프로그램의 스타일 내의 트리거 (이 스타일은 명시 적 또는 암시 적 스타일 일 수 있지만 우선 순위가 낮은 기본 스타일은 아님).

+0

답장을 보내 주셔서 감사합니다. 그러나 이것에 대한 좋은/일반적인 해결책이 무엇인지 알고 있습니까? –

+0

@ user45763 그것은 다릅니다 ... 당신은 단지 기본/초기 값을 설정하려고합니까? 그렇다면 좋은 해결책은 뷰 모델에서 'Progress = 100'을 설정하는 것입니다. – McGarnagle