2017-07-27 52 views
0

我有這樣的代碼片段我如何設置兩個圖像源與一個流

Task.Run(async() => 
{  
       stream = await DependencyService.Get<IPicturePicker>().GetImageStreamAsync(); 

       if (stream != null) 
       { 

        Device.BeginInvokeOnMainThread(() => 
        { 
         ImageOne.Source = ImageSource.FromStream(() => stream); 
         ImageTwo.Source = ImageSource.FromStream(() => stream); 

        }); 

       } 
} 

與代碼的問題是,只有ImageTwo.Source獲取設置(因爲它是最後一個)。如何將ImageOne和ImageTwo設置爲同一個流?有沒有更好的方式來做到這一點,然後我在做什麼?

+0

我希望只imageOne進行設置。你確定它設置imageTwo? –

回答

1

這裏是你可以做什麼:

Device.BeginInvokeOnMainThread(async() => 
      { 
       Stream stream = await DependencyService.Get<IPicturePicker>().GetImageStreamAsync(); 
       var memoryStream = new MemoryStream(); 
       await stream.CopyToAsync(memoryStream); 

       image1.Source = ImageSource.FromStream(() => { return new MemoryStream(memoryStream.ToArray()); }); 
       image2.Source = ImageSource.FromStream(() => { return new MemoryStream(memoryStream.ToArray()); }); 
      }); 
0

也許你能得到它這樣做的方式:

Task.Run(async() => 
{  
    stream = await DependencyService.Get<IPicturePicker().GetImageStreamAsync(); 

    if (stream != null) 
    { 
     Device.BeginInvokeOnMainThread(() => 
     { 
      var source = ImageSource.FromStream(() => stream); 
      ImageOne.Source = source; 
      ImageTwo.Source = source; 
     }); 
    } 
} 

您應該測試,我沒有嘗試過。

+0

我也試過。它給了我相同的結果。 – Daron

+0

具有諷刺意味的是,我通過返回流數組而不是流來解決問題......感謝您的幫助 – Daron

+0

好!那好吧。 –

相關問題