C# 在MVVM UWP中与CaptureElement启动预览同步

C# 在MVVM UWP中与CaptureElement启动预览同步,c#,wpf,mvvm,camera,uwp,C#,Wpf,Mvvm,Camera,Uwp,我正在为Prism应用程序的MVVM摄像头工作,并使用此方法在CaptureElement组件中显示预览 private async Task StartPreviewAsync(string deviceId) { try { _mediaCapture = new MediaCapture(); MediaCaptureInitializationSettings

我正在为Prism应用程序的MVVM摄像头工作,并使用此方法在CaptureElement组件中显示预览

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。源道具:

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()
在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)中
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.TaskAwaiter.GetResult()中
在Mateo.UILogic.ViewModels.CameraSelectionPageViewModel.d_u111.MoveNext()中
请求的操作中出现意外错误。预览 水槽未设置


任何人,请帮我解决这个问题。

当我忘记检查Package.appxManifst->Capabilities部分中的网络摄像头和麦克风选项时,我遇到了同样的错误。

只是好奇,你为什么要将
MediaCapture
放在你的视图模型中?我不认为
MediaCapture
属于视图模型。@我尝试了各种方法,但MediaCapture只是在它的调度程序中运行,它只存在于代码隐藏中。所以我已经在代码隐藏中编写了代码:我喜欢你说的,mediacapture不属于VM