我无法将DataContext从一个userControl后面的代码设置为另一个userControl。
private void grdWorkingList_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) {
DashboardSynopsisViewModel dsViewModel = new DashboardSynopsisViewModel();
AuditInfoViewModel auditInfoViewModel = new AuditInfoViewModel();
AuditInfoView auditInfoView = new AuditInfoView();
var selectedItem = (grdWorkingList.SelectedItem as AutoMgmtSoln.AuditWinPro.ClientData.Model.AuditDTO);
// MainWindow mainWindow = new MainWindow();
DSViewContentControl.Content = new AuditInfoView();
auditInfoView.DataContext = auditInfoViewModel;
auditInfoViewModel.AuditDTO = auditInfoViewModel.getAuditById(selectedItem.AuditId);
}
我有两个用户控件DashboardSynopsisView
和AuditInfoView
,其中包含视图模型DashboardSynopsisViewModel
和AuditInfoViewModel
。所以在后面的代码中我有一个事件grdWorkingList_MouseDoubleClick
,它在mouseDouble点击时被触发,它将dashboardSynopsisView
的内容控件设置为AuditInfoView
以及DataContext
到{{ 1}}。
AuditInfoViewModel
有一个属性AuditInfoViewModel
,我用它来显示所选项目的信息。
这是我的.xaml文件的一部分
AuditDTO
以下是我为解决问题所做的改变。
<TextBlock Grid.Column="0" Grid.Row="0" Text="Company Code :"></TextBlock>
<TextBlock Grid.Column="1" Grid.Row="0" Width="auto" Text="{Binding AuditDTO.CompanyCode}" ></TextBlock>
<TextBlock Grid.Column="0" Grid.Row="1" >Company Name :</TextBlock>
<TextBlock Grid.Column="1" Grid.Row="1" Width="auto" Text="{Binding AuditDTO.CompanyName}" ></TextBlock>
答案 0 :(得分:0)
您正在设置“auditInfoView”变量的数据上下文,但将内容控件设置为新的AuditInfo视图。
进行这些匹配(可能通过将内容设置更改为auditInfoView变量),您的代码应该可以正常工作。
为了提供一些背景知识,如果您不熟悉C#,使用new运算符会调用类的构造函数,从而创建一个具有默认值的新对象(以及构造函数本身完成的任何集合或操作)。设置另一个实例的DataContext属性对新构造的实例没有影响。