【问题标题】:Set Image Source on return from Gallery/Camera?从图库/相机返回时设置图像源?
【发布时间】:2015-02-08 09:54:37
【问题描述】:

我有一个图像视图,但无法为其设置源。我正在使用一个按钮来执行一个 TakePictureCommand,它调用 TakePicture() 方法(如下所示),该方法又设置我的源“ImageSource”。调试该方法显示图像正在进入,但我从未在 UI 中看到它。

我可能没有正确设置图像的绑定,这就是我所拥有的:

Image avatar = new Image();
avatar.Source = ImageSource;

Button setImageBtn = new Button{ Text = "Photo" };
setImageBtn.Clicked += async (sender, e) =>
{
    string action = await DisplayActionSheet(
           "Event Photo", "Cancel", null, OPTION_CAMERA, OPTION_GALLERY);

    if(action == OPTION_CAMERA) {
        TakePictureCommand.Execute(null);
    }

    else if(action == OPTION_GALLERY) {
        SelectPictureCommand.Execute(null);
    }
};

拍照()

private async Task<MediaFile> TakePicture()
{
    Setup();

    ImageSource = null;

    return await _mediaPicker.TakePhotoAsync(
        new CameraMediaStorageOptions { 
            DefaultCamera = CameraDevice.Front, 
            MaxPixelDimension = 400 
    }).ContinueWith(t =>
    {
        if (t.IsFaulted)
        {
            Status = t.Exception.InnerException.ToString();
        }
        else if (t.IsCanceled)
        {
            Status = "Canceled";
        }
        else
        {
            var mediaFile = t.Result;

            ImageSource = ImageSource.FromStream(() => mediaFile.Source);

            return mediaFile;
        }

        return null;
    }, _scheduler);
}

我在这里错过了什么?

【问题讨论】:

标签: xamarin xamarin.forms xamarin.forms.labs


【解决方案1】:

以下方法对我有用:

首先,我在 XAML 中添加了图像视图

<Image Source="{Binding ImageSource}" VerticalOptions="Fill" HorizontalOptions="Fill"
                    Aspect="AspectFit"/>

其次,我在 ViewModel 中添加了 ImageSource 属性,如下所示:

public ImageSource ImageSource
{
    get { return _imageSource; }
    set { this.SetProperty(ref _imageSource, value); }
}

三、在命令处理程序中:

await TakePicture ();

第四,TakePicture() 方法的代码和你写的一样。 我的设置():

if (_mediaPicker != null)
            return;
var device = Resolver.Resolve<IDevice>();
_mediaPicker = DependencyService.Get<IMediaPicker>() ?? device.MediaPicker;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多