我正在尝试使用 Xamarin Forms 媒体插件。我在尝试获取我的按钮时被绊倒了,在我的 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)
{
...
}
关于c# - Xamarin 中的异步按钮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63134633/