繁体   English   中英

WPF从后面的代码将用户控件绑定到视图模型

[英]WPF bind usercontrol to viewmodel from code behind

主窗口构造函数:

InitializeComponent();
MainViewModel = new MainViewModel();
captureUserControl.DataContext = MainViewModel.CaptureViewModel;

主窗口中的 XAML

<UserControls:CaptureControl x:Name="captureUserControl"/>

用户控制的一部分

<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方法来初始化硬件。 是否有人以这种方式设置了数据绑定的任何示例或技巧?

元素的DataContext由其子元素继承。

这里的解决方案是从Binding中删除ElementName

有关DataContexts的更多详细信息的链接: DataContext的作用是什么?

UserControl并非旨在绑定到视图模型。

它们本应绑定到其他容器(即Window)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM