我知道这个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();
}
}
}
感谢您的帮助:)
答案 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();
}
}
应包含在代表相机的服务中。我没有把它包括在内以保持解决方案的简单。