2010-12-15 6 views
0

내 응용 프로그램에는 각각 다른 작업을하는 몇 명의 배경 작업자가 있습니다. '시작'버튼을 클릭하면 모든 배경 작업자가 동시에 시작됩니다. 나는 애니메이션이 모든 BackgroundWorker에 시작할 때 시작하고, 후에 모든 백그라운드 작업자가 중지 중지 할DataTrigger on WPF 애니메이션

<window.Resources> 
    <Storyboard x:Key="imageRotate"> 
     <DoubleAnimation Storyboard.TargetName="transRotate" 
       Storyboard.TargetProperty="(Image.RenderTransform).(RotateTransform.Angle)" 
       From="0" To="360" 
       Duration="0:0:0.5" 
       AutoReverse="False" 
       RepeatBehavior="Forever"/> 
    </Storyboard> 
</window.Resources> 

: 내 XAML에서

, 나는 화상 회전의 내 애니메이션을 정의했다.

나는 속성 호출 AreWorkersBusy 있습니다

private bool _areWorkerBusy; 
public bool AreWorkerBusy 
{ 
    get 
    { 
     return _areWorkerBusy; 
    } 
    set 
    { 
     bool isBusy = false; 
     foreach(BackgroundWorker worker in BackgroundWorkerList) 
     { 
      if(worker.IsBusy) 
       isBusy = true; 
     } 
     _areWorkerBusy = isBusy; 
    } 
} 

을하지만 DependencyProperty를하지, 그래서 내 애니메이션의 DataTrigger에 바인딩 할 수 없습니다.

해결 방법 ???

도움말! 가능한 방법

답변

1

하나,

당신은 'AreWorkerBusy'변경을 통지 그것으로 제어 및 바인드 'AreWorkerBusy'에서 종속성 속성을 만들 수에서 INotifyPropertyChanged를 구현할 수 있습니다.

두 개의 라우트 된 이벤트 하나를 생성하여 애니메이션을 시작하고 다른 하나는 애니메이션을 중지합니다.

DP의 속성 변경 처리기에서 특정 라우트 된 이벤트를 발생시킵니다.

컨트롤에서 이벤트 트리거를 작성하고 이벤트 시작에 따라 애니메이션을 중지합니다.

비슷한 경험을했습니다. http://keepitsimpleengineer.blogspot.com/2010/09/wpf-circular-progress-control-part-2.html