2012-02-10 17 views
-1

WPFのイメージボックスにイメージを更新する必要があります。私はすべてのパスを持つリストを作成し、10秒をチェックするタイマーコントロールを使用することを考えています。 10秒が経過すると、リストから次のIDが取得され、イメージボックスにバインドされます。私はWPFが初めてです。誰でも私の実例を助けてくれますか?WPFイメージボックスで10秒ごとにイメージを変更します。

+0

どのくらい知っていますか?どちらの部分に問題がありますか? –

+0

イメージボックスに1つのイメージをバインドするためにこれまで行ってきました。 – user1107875

答えて

0

DispatcherTimerを使用して、定期的なインターバルでメソッドを呼び出します。このメソッドでは、バインドされたイメージを変更し、バインドされたプロパティを再び照会する必要があることをWPFに知らせるために、INotifyPropertyChangedイベントを発生させてください。

+0

こんにちは、返信ありがとうが、Timer_Elapsed()イベントを使用してそれを行った。下のコードは、lapsedイベントに配置されます。 アクションアクション=()=> BindToImages(lststr); Dispatcher.BeginInvoke(action); _timer.Start(); – user1107875

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

これは質問に答えません。共有する追加情報がある場合は、質問を編集する必要があります。 http://stackoverflow.com/faqのfaqを読んでください。 – vidstige

関連する問題