0

を実装するクラスにバインドされているイメージ コントロール内のイメージを更新しようとしていますINotifyPropertyChanged。画像を更新できるようにビットマップキャッシュの更新に関連するほとんどの方法を試しましたが、私の場合はうまくいかないようです。画像コントロールは、xaml ファイルで次のように定義されています。<Image Source="{Binding Chart}" Margin="0 0 0 0"/> また、クラスの背後にあるコードでは次のように定義されています。

 private ImageSource imagechart = null;

    public ImageSource Chart
    {
        get
        {
            return imagechart;
        }
        set
        {
            if (value != imagechart)
            {
                imagechart = value;
                NotifyPropertyChanged("Chart");

            }

        }
    }

イベントの後、次のコードを使用して画像を設定しました。

c.Chart = image;

アプリケーションを実行すると画像が表示されますが、アプリケーションの実行中に画像を更新しますが、これを呼び出すとc.Chart = image;初期画像が表示されます。WPFが画像をキャッシュすることを理解するようになりましたが、この問題を解決すると主張するすべてのメソッドが私のために機能します。私にとってうまくいかなかった解決策の1つは、画像ソースとして設定されたときに画像を上書きする(再保存する)問題です

4

2 に答える 2

0

彼らを通してあなたの意見をありがとう、私は最終的にこれを回避する方法を見つけました。私のxamlはまだバインドされたまま<Image Source="{Binding Chart}" Margin="0 0 0 0"/>ですが、コードビハインドでは、クラスプロパティチャートを変更して、以下に示すようにビットマップを返します:

  private BitmapImage image = null;

    public BitmapImage Chart
    {
        get
        {
            return image;
        }
        set
        {
            if (value != image)
            {
                image = value;
                NotifyPropertyChanged("Chart");

            }

        }
    }

あなたが実装するこのクラスの心INotifyPropertyChanged。画像を設定した時点で、このコードを使用しています:

BitmapImage img = new BitmapImage();
img.BeginInit();
img.CacheOption = BitmapCacheOption.OnLoad;
img.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
//in the following code path is a string where i have defined the path to file
img.UriSource = new Uri(string.Format("file://{0}",path));
img.EndInit();
c.Chart = img;

これは私にとってはうまく機能し、更新時に画像を更新します。

于 2013-10-02T07:47:03.920 に答える