Xamarin.forms 如何用一个流设置两个图像源
我有这个代码片段Xamarin.forms 如何用一个流设置两个图像源,xamarin.forms,Xamarin.forms,我有这个代码片段 Task.Run(async () => { stream = await DependencyService.Get<IPicturePicker>().GetImageStreamAsync(); if (stream != null) { Device.BeginInvokeOnMainThread((
Task.Run(async () =>
{
stream = await DependencyService.Get<IPicturePicker>().GetImageStreamAsync();
if (stream != null)
{
Device.BeginInvokeOnMainThread(() =>
{
ImageOne.Source = ImageSource.FromStream(() => stream);
ImageTwo.Source = ImageSource.FromStream(() => stream);
});
}
}
Task.Run(异步()=>
{
stream=wait DependencyService.Get().GetImageStreamAsync();
if(流!=null)
{
Device.beginInvokeMainThread(()=>
{
ImageOne.Source=ImageSource.FromStream(()=>stream);
ImageTwo.Source=ImageSource.FromStream(()=>stream);
});
}
}
代码的问题是只设置了ImageOne.Source(因为它是最后一个)。我如何使用相同的流设置ImageOne和ImageTwo?有没有比我现在做的更好的方法呢?也许你可以这样做:
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;
});
}
}
Task.Run(异步()=>
{
stream=wait DependencyService.Get
{
var source=ImageSource.FromStream(()=>stream);
ImageOne.Source=源;
图像二。源=源;
});
}
}
你应该测试一下,我没有试过。也许你可以这样做:
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;
});
}
}
Task.Run(异步()=>
{
stream=wait DependencyService.Get
{
var source=ImageSource.FromStream(()=>stream);
ImageOne.Source=源;
图像二。源=源;
});
}
}
你应该测试一下,我没有试过。以下是你可以做的:
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()); });
});
Device.beginInvokeMainThread(异步()=>
{
Stream=等待DependencyService.Get().GetImageStreamAsync();
var memoryStream=新的memoryStream();
等待流.CopyToAsync(memoryStream);
image1.Source=ImageSource.FromStream(()=>{returnnewmemoryStream(MemoryStream.ToArray());});
image2.Source=ImageSource.FromStream(()=>{returnnewmemoryStream(MemoryStream.ToArray());});
});
以下是您可以做的:
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()); });
});
Device.beginInvokeMainThread(异步()=>
{
Stream=等待DependencyService.Get().GetImageStreamAsync();
var memoryStream=新的memoryStream();
等待流.CopyToAsync(memoryStream);
image1.Source=ImageSource.FromStream(()=>{returnnewmemoryStream(MemoryStream.ToArray());});
image2.Source=ImageSource.FromStream(()=>{returnnewmemoryStream(MemoryStream.ToArray());});
});
我只希望设置imageOne。你确定它设置imageOne吗?我只希望设置imageOne。你确定它设置imageTwo吗?具有讽刺意味的是,我通过返回一个流数组而不是流来解决问题…谢谢你的帮助具有讽刺意味的是,我通过返回一个流数组而不是流来解决问题…谢谢你的帮助