如何使用Caliburn.Micro将源MediaCapture绑定到CaptureElement?

Fre*_*ald 4 mvvm caliburn.micro windows-phone-8.1

在Windows Phone 8.1上,我使用的是Caliburn.Micro视图模型优先方法,但由于视图模型无法了解视图,因此我无法看到如何将MediaCapture对象绑定到视图中的CaptureElement.

Haw*_*ett 8

我有同样的问题.我正在使用MVVM Light和Windows Phone 8.1 WinRT(通用应用程序).

我使用ContentControl并绑定到CaptureElement:

 <ContentControl HorizontalAlignment="Left"         
                Width="320" Height="140" Content="{Binding CaptureElement}"/>
Run Code Online (Sandbox Code Playgroud)

CaptureElement和MediaCapture是我的ViewModel中的属性:

private MediaCapture _mediaCapture;
        public MediaCapture MediaCapture
        {
            get
            {
                if (_mediaCapture == null) _mediaCapture = new MediaCapture();
                return _mediaCapture;
            }
            set
            {
                Set(() => MediaCapture, ref _mediaCapture, value);
            }
        }
        private CaptureElement _captureElement;
        public CaptureElement CaptureElement
        {
            get
            {
                if (_captureElement == null) _captureElement = new CaptureElement();
                return _captureElement;
            }
            set
            {
                Set(() => CaptureElement, ref _captureElement, value);
            }
        }
Run Code Online (Sandbox Code Playgroud)

接下来我在ViewModel的构造函数中调用ConfigureMedia():

   async void ConfigureMedia()
    { 
        await MediaCapture.InitializeAsync();
        CaptureElement.Source = MediaCapture;
        await MediaCapture.StartPreviewAsync();
    }
Run Code Online (Sandbox Code Playgroud)

首先初始化MediaCapture,然后设置Source,最后是StartPeview是很重要的.对我来说它有效:)