在WPF图像框中每隔10秒更改一次图像

时间:2012-02-10 10:45:38

标签: wpf-controls

需要更新WPF图像框中的图像。我正在考虑创建一个包含所有路径的列表,然后使用计时器控件检查10秒。经过10秒后,将从列表中获取下一个ID并将其绑定到图像框。我是WPF的新手。任何人都可以通过一个有效的例子来帮助我。

2 个答案:

答案 0 :(得分:0)

使用DispatcherTimer定期调用方法。在此方法中更改绑定图像,记得引发INotifyPropertyChanged事件以让WPF知道它应该再次查询绑定属性。

答案 1 :(得分:0)

您好我已经使用以下代码运行了。

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