0
我被棱鏡應用工作的攝像頭,MVVM和使用這種方法來顯示CaptureElement組件預覽StartPreviewAsync與CaptureElement在MVVM UWP
private async Task StartPreviewAsync(string deviceId)
{
try
{
_mediaCapture = new MediaCapture();
MediaCaptureInitializationSettings setting = new MediaCaptureInitializationSettings();
setting.VideoDeviceId = deviceId;
await _mediaCapture.InitializeAsync(setting);
//_displayRequest.RequestActive();
//DisplayInformation.AutoRotationPreferences = DisplayOrientations.Landscape;
CaptureElementSource = _mediaCapture;
//This line throw exception
await _mediaCapture.StartPreviewAsync();
}
catch (UnauthorizedAccessException)
{
Debug.WriteLine("The app was denied access to the camera");
}
catch (Exception ex)
{
Debug.WriteLine("MediaCapture initialization failed. {0}", ex.Message);
}
}
這是我CaptureElement.Source道具:
public MediaCapture CaptureElementSource
{
get { return _captureElementSouce; }
set { SetProperty(ref _captureElementSouce, value); }
}
而且我得到這個異常:
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at Mateo.UILogic.ViewModels.CameraSelectionPageViewModel.<StartPreviewAsync>d__111.MoveNext()
請求的操作發生意外錯誤。預覽 接收器沒有設置
任何人,請在這幫助我。
只是好奇,爲什麼你把'MediaCapture'放到你的視圖模型中?我不認爲'MediaCapture'屬於視圖模型。 – Scavenger
@ Scavenger我嘗試了各種方式,但MediaCapture只是在Dispatcher中運行,它只存在於代碼後面。所以我在代碼背後寫了我的代碼。 :D就像你說的,mediacapture不屬於VM –