Mainwindow 构造函数:
InitializeComponent();
MainViewModel = new MainViewModel();
captureUserControl.DataContext = MainViewModel.CaptureViewModel;
主窗口 中的XAML
<UserControls:CaptureControl x:Name="captureUserControl"/>
usercontrol
的一部分<Image x:Name="masterImage" Margin="0,189,0,120" RenderTransformOrigin="0.5,0.5" Source="{Binding Path=MasterImage, ElementName=captureUserControl}" Stretch="Fill" Grid.Column="1" >
ViewModel
的一部分public BitmapSource MasterImage { get { return masterImage; } private set {SetValue<BitmapSource>(ref masterImage, value); } }
错误
System.Windows.Data Error: 40 : BindingExpression path error:
'MasterImage' property not found on 'object' ''CaptureControl'
(Name='captureUserControl')'. BindingExpression:Path=MasterImage;
DataItem='CaptureControl' (Name='captureUserControl');
target element is 'Image' (Name='masterImage'); target property is 'Source' (type 'ImageSource')
我认为这可能是因为在创建时captureUserControl
没有设置其datacontext,直到创建它为止。我希望MainViewModel
在代码后面实例化,因为需要完成的事情不是按钮点击。需要在窗口加载时调用某些async
方法来初始化硬件。有没有人以这种方式设置数据绑定的示例或提示?
答案 0 :(得分:1)
答案 1 :(得分:0)
UserControls并非设计为绑定到视图模型。
它们意味着绑定到其他容器(即Window)。