【发布时间】:2019-07-17 14:23:08
【问题描述】:
我目前正在制作一个自定义视图来预览设备的摄像头,并尝试触发“拍照”事件。
现在,我可以触发事件,但我没有找到将图片返回到 Xamarin Forms 共享代码的解决方案。
这是我在 Xamarin Forms 自定义控件中所做的事情:
public class CameraPreview : View
{
public event EventHandler TakePictureRequested;
public void TakePicture()
{
TakePictureRequested?.Invoke(this, EventArgs.Empty);
}
}
这里来自 例如 Android 的原生代码:
protected override void OnElementChanged(ElementChangedEventArgs<CameraPreview> e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
e.OldElement.TakePictureRequested += OnTakePictureRequested;
}
if (e.NewElement != null)
{
if (Control == null)
{
cameraPreview = new CameraPreviewView(Context);
SetNativeControl(cameraPreview);
}
Control.Preview = Camera.Open(getBackCameraId());
e.NewElement.TakePictureRequested += OnTakePictureRequested;
}
}
void OnTakePictureRequested(object sender, EventArgs e)
{
cameraPreview.TakePicture();
}
这个想法是本机代码中的“OnTakePictureRequested”可以将值返回给 Xamarin 表单。
有人有想法吗? 谢谢
【问题讨论】:
-
看看TaskCompletionSource。它非常简单,如果您仍然需要帮助,我们可以看看您尝试了什么
-
你好@shanranm,我已经试过了,但似乎我无法从 Invoke 返回一些东西
-
你需要等待
TaskCompletionSource返回的Task -
是的,但它不适用于事件处理程序。 Invoke 是一个 void 函数,不能等待。我想要的是在我的自定义控件中检索信息。
-
你想返回什么值?
标签: xamarin xamarin.forms