我正在尝试使用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)
{
...
}