C# 在MVVM UWP中与CaptureElement启动预览同步
我正在为Prism应用程序的MVVM摄像头工作,并使用此方法在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
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