MVVM绑定CaptureElement

时间:2015-07-15 20:31:04

标签: c# wpf xaml mvvm

我知道这个topi重复,但我尝试这个解决方案...... :(

Okey,我在Windows Phone 8.1上编写应用程序。此应用程序是MVVM模式的QRCode扫描程序。我有绑定CaptureElement的问题bacuse Visual Studio返回错误:

WinRT information: Cannot deserialize XBF metadata property list as '%1' was not found in type '%0'.

Okey,我的代码XAML:

<CaptureElement x:Name="Camera"   Height="300" Width="399.999969482422" Source={Binding ViewCapture}"></CaptureElement>

和ViewModel

 private MediaCapture _viewCapture;
 public MediaCapture ViewCapture
        {
            get
            {

                return _viewCapture;
            }
            set
            {
                if (_viewCapture != value)
                {
                    _viewCapture = value;
                    NotifyPropertyChanged();
                }
            }
        }

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

问题是由Source的{​​{1}}属性造成的,其值为CaptureElement,但MediaCapture的预览尚未开始。

这两条指令必须按顺序执行:

MediaCapture

我还没有找到一个优雅的解决方案,将这两个指令包含在MVVM中。我已使用captureElement.Source = mediaCapture; await mediaCapture.StartPreviewAsync(); 元素在ViewModel中动态生成ContentControl

查看:

CaptureElement

视图模型:

<ContentControl x:Name="captureElement"
                Content="{Binding CaptureElement}"/>

public class MainView : BaseView { private CaptureElement _captureElement; public CaptureElement CaptureElement { get { return _captureElement; } } public MainView() { InitializeCamera(); } private async void InitializeCamera() { // media capture creation _captureElement = new CaptureElement(); _captureElement.Source = mediaCapture; await mediaCapture.StartPreviewAsync(); } } 应包含在代表相机的服务中。我没有把它包括在内以保持解决方案的简单。