2014-03-03 89 views
0

我無法將DataContext從一個userControl後面的代碼設置爲另一個userControl。我無法將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); 
} 

我有兩個用戶控件DashboardSynopsisViewAuditInfoView具有視圖模型DashboardSynopsisViewModelAuditInfoViewModel。所以在後面的代碼中,我有一個事件grdWorkingList_MouseDoubleClick它是在鼠標雙擊它將內容控件dashboardSynopsisView設置爲AuditInfoView以及它的DataContextAuditInfoViewModelAuditInfoViewModel有一個屬性AuditDTO我正在使用它來顯示所選項目的信息。

這裏是我的.xaml文件

<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> 

的一部分,這裏是我已經解決我的問題的變化。

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 = ***auditInfoView***; 

     auditInfoView.DataContext = auditInfoViewModel; 
     auditInfoViewModel.AuditDTO = auditInfoViewModel.getAuditById(selectedItem.AuditId); 

    } 

回答

0

您設置「auditInfoView」變量的數據上下文,但設置的內容控制到一個新的AuditInfo視圖。

使這些匹配(可能通過更改內容設置爲auditInfoView變量),您的代碼應該可以工作。爲了提供一些背景知識,如果您是C#的新手,使用new運算符會調用該類的構造函數,從而創建一個具有默認值的新對象(以及由構造函數本身完成的任何集合或操作) 。設置另一個實例的DataContext屬性對新構建的實例沒有影響。

相關問題