Менять изображение через каждые 10 секунд в окне изображения WPF - PullRequest
0 голосов
/ 10 февраля 2012

Требуется обновить изображение в графических полях WPF. Я думаю о создании списка со всеми путями, а затем с помощью таймера, проверяющего 10 секунд. По истечении 10 секунд следующий идентификатор из списка берется и связывается с полем изображения. Я новичок в WPF. Может ли кто-нибудь помочь мне с рабочим примером.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2012

Привет, я заставил их работать с кодом ниже.

private void timer_Elapsed(object sender,System.Timers.ElapsedEventArgs e)
    {

        Action action1 = () => this.BeginStoryboard((Storyboard)this.FindResource("BlinkStoryboardFed"));
        Dispatcher.BeginInvoke(action1);
        Action action = () => BindToImages(lststr);
        Dispatcher.BeginInvoke(action);
        //BindToImages(lststr);
        _timer.Start();
    }

public void BindToImages(List<string> lststrpath)
    {
        lock (_locker)
        {
            for (int i = 0; i < lststrpath.Count; i++)
            {
                if (count == 0)
                {
                    startindex = i;
                    this.BindToImgIndx = startindex;
                    AppState.Index = i;
                    BitmapImage img = new BitmapImage();
                    img.BeginInit();
                    img.UriSource = new Uri(lststrpath[startindex].ToString(), UriKind.Relative);
                    img.CacheOption = BitmapCacheOption.OnLoad;
                    img.EndInit();
                    image1.Source = img;
                    count++;
                }
                else
                {
                    int k = AppState.Index;
                    k = ++k;
                    this.BindToImgIndx = startindex;
                    if (k < lststrpath.Count)
                    {
                        BitmapImage img = new BitmapImage();
                        img.BeginInit();
                        img.UriSource = new Uri(lststrpath[k].ToString(), UriKind.Relative);
                        img.CacheOption = BitmapCacheOption.OnLoad;
                        img.EndInit();
                        image1.Source = img;
                    }
                    AppState.Index = k;
                }
                this.BeginStoryboard((Storyboard)this.FindResource("BlinkStoryboardUnFed"));
                break; 
            }
        }
    }
0 голосов
/ 12 февраля 2012

Используйте DispatcherTimer для вызова метода через регулярные интервалы. В этом методе измените связанное изображение, не забудьте поднять событие INotifyPropertyChanged, чтобы WPF знала, что оно должно запросить связанное свойство снова.

...