0

ソースの設定に問題がある Image ビューがあります。ボタンを使用して、TakePicture() メソッド (以下に示す) を呼び出す TakePictureCommand を実行しています。これにより、ソース「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);
}

ここで何が欠けていますか?

4

1 に答える 1

0

以下のアプローチは私のために働いています:

まず、XAML で Image ビューを追加しました

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

次に、ViewModel に次のような ImageSource プロパティを追加しました。

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

3 番目に、コマンド ハンドラーで:

await TakePicture ();

4つ目は、TakePicture()メソッドのコードはあなたが書いたものと同じです。私のセットアップ():

if (_mediaPicker != null)
            return;
var device = Resolver.Resolve<IDevice>();
_mediaPicker = DependencyService.Get<IMediaPicker>() ?? device.MediaPicker;
于 2015-03-20T21:12:36.123 に答える