DataTrigger на анимации WPF - PullRequest
       17

DataTrigger на анимации WPF

0 голосов
/ 15 декабря 2010

В моем приложении есть несколько фоновых рабочих, каждый из которых выполняет свою работу. Когда я нажимаю кнопку «Пуск», все фоновые рабочие запускаются одновременно.

в моем xaml я определил свою анимацию поворота изображения:

<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>

Я хочу, чтобы анимация начиналась, когда все фоновые работники запускались, и останавливалась ТОЛЬКО после остановки ВСЕХ фоновых рабочих.

У меня есть вызов свойства 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;
    }
}

но это не Зависимость свойства, поэтому я не могу привязать к DataTrigger моей анимации.

Любой обходной путь ???

Помощь!

1 Ответ

1 голос
/ 15 декабря 2010

Один из возможных способов,

Вы можете реализовать INotifyPropertyChanged для уведомления об изменениях AreWorkerBusy, создания свойства зависимости в элементе управления и связывания с ним AreWorkerBusy.

Создайте два перенаправленных события: одно для запуска анимации и другое для остановки анимации.

В обработчике изменения свойства для вашего DP вызовите конкретное перенаправленное событие.

В вашем элементе управления записывается событие триггера, и на основании события запуска останавливается анимация.

Я написал похожий опыт, http://keepitsimpleengineer.blogspot.com/2010/09/wpf-circular-progress-control-part-2.html

...