![](/img/trans.png)
[英]How to navigate one Content page to another Content page from client project (IOS/Android) in xamarin forms?
[英]Xamarin Forms: How Can i Pass Media File From a content page (popup) to another content page
请我使用 Rg.Plugins.Popup 来执行操作。 我从中捕捉照片。 照片存储在 MediaFile 对象中。 我想将 MediaFile 的值传递到调用弹出窗口的主页面。
**public MediaFile _mediaFile;**
public async void ChoosePhotoEvent()
{
await CrossMedia.Current.Initialize();
if (!CrossMedia.Current.IsPickPhotoSupported)
{
await DisplayAlert("Error", "This is not support on your device.", "OK");
return;
}
else
{
var mediaOption = new PickMediaOptions()
{
PhotoSize = PhotoSize.Medium,
CompressionQuality = 10,
CustomPhotoSize = 30
};
**_mediaFile** = await CrossMedia.Current.PickPhotoAsync();
if (_mediaFile == null) return;
}
}
上面的代码显示了我从中获取数据的_mediaFile 。 我如何将这个 _mediaFile 中的值传递给另一个内容页面,以便我可以在下一页中显示图像?
另一个页面有一个需要数据的 StackLayout
<StackLayout Grid.Row="3" Orientation="Horizontal" HorizontalOptions="CenterAndExpand" Spacing="80" Padding="0,0,0,0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Image x:Name="capturedImage" Source="ic_add_a_photo.png" Aspect="AspectFill" WidthRequest="35" HeightRequest="35" Margin="0,0,0,0" IsVisible="True" Grid.Row="1"/>
</Grid>
</StackLayout >
x:Name="CapturedImage" 需要保存来自弹出页面的 _mediafile 的值
您可以将Stream作为参数传递到下一页。
var source = ImageSource.FromStream(() =>
{
var stream = _mediaFile.GetStream();
return stream;
});
用参数定义一个新的构造函数
public xxxContentPage(ImageSource source)
{
InitializeComponent();
capturedImage.Source = source;
}
当你想弹出页面时
this.Navigation.xxxContentPage(new xxxContentPage(source));
在您的情况下,您可以使用 MessagingCenter 将数据传递到最后一页。这样您就不需要设置导航。
var source = ImageSource.FromStream(() =>
{
var stream = _mediaFile.GetStream();
return stream;
});
MessagingCenter.Send<Object, ImageSource>(this,"finish",source);
public Faultz()
{
InitializeComponent();
// ...
MessagingCenter.Subscribe<Object, ImageSource>(this, "finish", (arg, source) =>
{
capturedImage.Source = source;
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.