/// <summary> /// 写真をキャプチャします。 /// </summary> /// <param name="format">キャプチャされた写真を格納する形式を決定します。</param> /// <returns></returns> private async static Task<StorageFile> CapturePhotoAsync(WrappedCameraCaptureUIPhotoFormat format) { #if WINDOWS_APP var camera = new CameraCaptureUI(); camera.PhotoSettings.Format = (CameraCaptureUIPhotoFormat)format; return await camera.CaptureFileAsync(CameraCaptureUIMode.Photo); #else // 警告の抑制 var _ = await Task.FromResult<StorageFile>(null); throw new NotImplementedException("Phone not supported."); #endif }
/// <summary> /// アクションを実行します。 /// </summary> /// <param name="format">キャプチャされた写真を格納する形式を決定します。</param> /// <param name="callbakCommand">アクションの実行後に呼び出す <see cref="ICommand"/>。</param> /// <param name="errorHandleCommand">例外発生時に呼び出す <see cref="ICommand"/>。</param> /// <returns></returns> private async static Task ExecuteAsync(WrappedCameraCaptureUIPhotoFormat format, ICommand callbakCommand, ICommand errorHandleCommand) { StorageFile photo; try { photo = await CapturePhotoAsync(format); } catch (Exception ex) { if (errorHandleCommand == null) throw; if (!errorHandleCommand.CanExecute(ex)) throw; errorHandleCommand.Execute(ex); return; } if (callbakCommand.CanExecute(photo)) { callbakCommand.Execute(photo); } }