1

C#では、アプリケーションでフェードインしてからフェードアウトしようとしImageています。その画像MainPage。最初はうまくいきます。しかし、別のサイトに移動した場合は、言ってからディスパッチャSettings.xamlに戻りますMainPageInvalid cross-thread access.

誰もがアイデアを思いついた、これは私が私BackgroundWorker_DoWork関数で画像の不透明度を設定しようとしている方法です:

Dispatcher.BeginInvoke(() =>
                    {
                        MyImage.Opacity = opacity;
                    });

おかしい、それは壊れませんが、それに置くbreakpointとそれはすべてがInvalid cross-thread access.

4

2 に答える 2

1

ではなく、アニメーションを使用してフェードロジックを実装してみてくださいBackgroundWorker。それは役立つかもしれません。

このように試しましたか?

Windows Phone Toolkitを使用する別の方法:

WP7トランジションの深さ| 重要な概念とAPI

WP7トランジションの深さ| カスタムトランジション

古い記事ですが、役立つ情報が含まれている場合があります。

于 2013-01-12T18:05:02.097 に答える
1

これを試して:

Dispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(delegate()
        {
            //your code in another thread you want to invoke in UI thread
        }));

たとえば、MainWindowからUIスレッドから呼び出す必要があります。私のプロジェクトから:

//Event raised on ImageSource property changed while Backgroundwoker in MainWindow class:
    void binding_PropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        MyProject.ImageCropSize crop = MyProject.ImageCropSize.SourceCrop;

        this.Dispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(delegate()
        {
            BitmapImage bmisource = image1.Source as BitmapImage;
            bmisource = null;//new BitmapImage();
            GC.Collect();

            BitmapImage bmi = MyProject.ImageData.ConvertFromBitmapToBitmapImage(((ImageBinding)sender).BitMap, crop);
            image1.Source = bmi;
            ((ImageBinding)sender).Clear();

        }));
    }
于 2013-01-13T14:05:17.783 に答える