Change image after each 10seconds in WPF image box

主宰稳场 提交于 2019-12-13 23:42:10

问题


There is a requirement of updating image in image boxes of WPF. I am thinking of creating a list with all the paths and then using a timer control checking the 10 seconds. After the 10 seconds has elapsed the next id from list is taken and bound to the image box. I am new to WPF. Can any one help me with a working example.


回答1:


Use a DispatcherTimer to invoke a method at regular intervalls. In this method change the bound image, remember to raise the INotifyPropertyChanged event to let WPF know it should query the bound property again.




回答2:


Hi i have made thig running with the below code .

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


来源:https://stackoverflow.com/questions/9226514/change-image-after-each-10seconds-in-wpf-image-box

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!