0

我正在加载一个BitmapImagefromIsolatedStorage并希望将值设置为 MainPage 的背景。我不确定如何正确执行此操作?

TombstoningHelper.cs

public async Task StorePhoto(Stream photoStream, string fileName)
    {
        // persist data into isolated storage
        StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

        using (Stream current = await file.OpenStreamForWriteAsync())
        {
            await photoStream.CopyToAsync(current);
        }
    }

public async Task<BitmapImage> RetrievePhoto(string fileName)
    {
        StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
        Stream imageStream = await file.OpenStreamForReadAsync();

        //Check if file exists

        // display the file as image
        BitmapImage bi = new BitmapImage();
        bi.SetSource(imageStream);

        return bi;
    }

MainPage.xaml.cs

protected async override void OnNavigatedTo(NavigationEventArgs e)
    {
        //Set Page Theming
        ImageBrush ib = new ImageBrush();
        TombstoningHelper tsh = new TombstoningHelper();

        if (Settings.TransparentBackground.Value == null)
            ib.ImageSource = new BitmapImage(new Uri("/Assets/Graphics/" + Settings.Background.Value, UriKind.Relative)); //No Error
        else
            ib.ImageSource = tsh.RetrievePhoto(Constants.BackgroundImageName); //Error occurs here

        LayoutRoot.Background = ib;

我收到上面的错误说明Cannot implicitly convert type 'System.Threading.Tasks.Task<System.Windows.Media.Imaging.BitmapImage>' to 'System.Windows.Media.ImageSource

4

2 回答 2

2

您需要使用 await 关键字,因为您的 Helper 方法是异步的。

else
    ib.ImageSource = await tsh.RetrievePhoto(Constants.BackgroundImageName);
于 2014-06-25T11:57:57.713 回答
0

您应该使用 await 语句,如下所示: ib.ImageSource = await tsh.RetrievePhoto(Constants.BackgroundImageName);

于 2014-06-25T11:59:25.247 回答