首页 > 解决方案 > Xamarin 表单:ImageCropper.Forms:如何删除多个弹出窗口?

问题描述

我正在使用ImageCropper.Forms裁剪从相机和图库中选择的图像。我有 3 个选项来更改个人资料图片;拍照,从图库上传并选择头像。因此,为了显示媒体选项,我使用DisplayActionSheet如下:

var actionSheet = await DisplayActionSheet(null,"Cancel", null, "Take Photo", "Upload from Gallery", "Select Avatar");
if (actionSheet == "Take Photo")
{
    OpenCamera();
}
else if(actionSheet == "Upload from Gallery")
{
    Opengallery();
}
else if(actionSheet == "Select Avatar")
{
    OpenAvatar();
}

下面添加了 OpenCamera() 和 Opengallery()。该代码还以弹出窗口的形式再次询问Take Photoand选项。Photo Library我不需要那个弹出窗口,有没有办法删除第二个弹出窗口ImageCropper.Forms并直接加载相机或画廊?

我的代码:

    async void OpenCamera()
    {
        try
        {
            await CrossMedia.Current.Initialize();
            //I need to open camera only here, no need of a pop up again.
            new ImageCropper()
            {
                PageTitle = "Test Title",
                AspectRatioX = 1,
                AspectRatioY = 1,
                CropShape = ImageCropper.CropShapeType.Rectangle,
                SelectSourceTitle = "Select source",
                TakePhotoTitle = "Take Photo",
                PhotoLibraryTitle = "Photo Library",
                Success = (imageFile) =>
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        profilephoto.Source = ImageSource.FromFile(imageFile);
                    });
                }
            }.Show(this);
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine("CameraException:>" + ex);
        }
    }

async void Opengallery()
{
    try
    {
        await CrossMedia.Current.Initialize();
        //I need to open gallery only here, no need of a pop up again.
        new ImageCropper()
        {
            PageTitle = "Test Title",
            AspectRatioX = 1,
            AspectRatioY = 1,
            CropShape = ImageCropper.CropShapeType.Rectangle,
            SelectSourceTitle = "Select source",
            TakePhotoTitle = "Take Photo",
            PhotoLibraryTitle = "Photo Library",
            Success = (imageFile) =>
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    profilephoto.Source = ImageSource.FromFile(imageFile);
                    //var stream = ImageSource.FromFile(imageFile);
                    //imagefile = imageFile;
                });
            }
        }.Show(this);
    }
}

截图:https ://i.stack.imgur.com/qYBuu.jpg

标签: xamarin.forms

解决方案


默认警报是在包中定义的。所以我认为我们不能直接阻止它。如果你想设置它的文本,你只需要设置

SelectSourceTitle = " ",
TakePhotoTitle = "Take Photo",
PhotoLibraryTitle = "Upload from Gallery"

推荐阅读