Xamarin中的异步按钮事件



我正在尝试使用Xamarin Forms Media插件。我在试图获取MainPage.XAML文件中的按钮以调用MainPage.XAML.CS文件中的异步函数时出错了。

代码的第一行给了我问题:takePhoto.Clicked+=async(sender,args(=>

"拍照"是我的app.xaml文件中按钮的名称,但无论我尝试什么,我似乎都无法在app.xaml.cs中获取按钮的名称。所以我不知道如何调用这个异步函数。

以下是库用来与插件合影的代码-此代码在我的App.Xaml.CS文件中:

takePhoto.Clicked += async (sender, args) =>
{
await CrossMedia.Current.Initialize();
var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
Directory = "Sample",
Name = "test.jpg"
});
if (file == null)
return;
image.Source = ImageSource.FromStream(() =>
{
var stream = file.GetStream();
file.Dispose();
return stream;
}); 
};

我的按钮在App.Xaml页面上,如下所示:

<Button ClassId="TakePicture"
Text="Take Picture"
Margin="100" 
HorizontalOptions="CenterAndExpand"
/>

这可能是一个简单的问题。通常,我会在上面剪切的代码中添加Clicked=callFunction((属性,但如果函数是异步的,我不知道该怎么做。如果有任何指导,我将不胜感激。

您想得太多了-只需在处理程序签名中使用async关键字,而不是在XAML 中

<Button ClassId="TakePicture"
Clicked="TakePhoto"
Text="Take Picture"
Margin="100" 
HorizontalOptions="CenterAndExpand"
/>

然后在后面的代码中

protected async void TakePhoto(object sender, EventArgs a)
{
...
}

最新更新