2011-08-13 70 views
2

我有一個主窗口,在上半部分有一個數據網格,在下半部分有一個tabcontrol。 datagrid包含公司列表。較低的tabcontrol中的一個選項卡包含有關在上部數據網格中選擇的公司對應的聯繫人的信息。Datagrid - 沒有行顯示

在選項卡上放置一個用戶控件。

<TabItem Name="pgContactsXCompany"> 
    <local:ContactsXCompany x:Name="contactsXCompany"/> 
</TabItem> 

usercontrol「ContactsXCompany」上有一個datagrid,其中包含與所選公司對應的聯繫人列表。

<dg:DataGrid Name="dgContactsXCompanyList" 
      ItemsSource = "{Binding}" 
      AutoGenerateColumns="False" 
      IsReadOnly="True"> 
<dg:DataGrid.Columns> 
    <dg:DataGridTextColumn Header="Id" Width="Auto" Binding="{Binding Path=intIDContact}" Visibility="Hidden" /> 
    <dg:DataGridTextColumn Header="Jméno" Width="Auto" Binding="{Binding Path=txtName}" /> 
    <dg:DataGridTextColumn Header="Příjmení" Width="Auto" Binding="{Binding Path=txtSurname}" /> 
    <dg:DataGridTextColumn Header="Pobočka" Width="Auto" Binding="{Binding Path=txtBranchOffice}" /> 
    <dg:DataGridTextColumn Header="Město" Width="Auto" Binding="{Binding Path=txtTown}" /> 
</dg:DataGrid.Columns> 
</dg:DataGrid> 

觸點通過函數,該函數作爲參數選擇的公司(該公司的SAP數)的ID加載。

問題是如何將上數據網格中選定的公司的SAP編號傳遞給usercontrol。我創建了一個代表:

Public Delegate Sub CompanyContactsUpdate(ByVal sap As String) 

然後在主窗口上,在的SelectionChanged子的公司數據網格我放置在下面的代碼:

Dim doUpdate As CompanyContactsUpdate 
Dim obj As New ContactsXCompany 
doUpdate = New CompanyContactsUpdate(AddressOf obj.UpdateContactsXCompanyDatagrid) 
doUpdate.Invoke(grid.SelectedItem.txtSap) 

功能UpdateContactsXCompanyDatagrid是在該用戶控件定義:

Public Class ContactsXCompany 
    Public Sub UpdateContactsXCompanyDatagrid(ByVal Sap As String) 
     Dim d As New ContactPersonViewModel 
     Me.dgContactsXCompanyList.DataContext = d.GetContacts(Sap) 
    End Sub 
End Class 

當我運行應用程序時,一切正常無誤。所選公司的Sap編號正確傳遞給UpdateContactsXCompanyDagagrid函數。 Me.dgContactsXCompanyList.DataContext似乎被分配,但聯繫人的datagrid是EMPTY。沒有行被顯示。

我應該在哪裏搜索問題? 非常感謝您的幫助!

回答

0

的是從你調用返回ContactPersonViewModel.GetContacts()集合類型?

我相信它需要成爲一個ObservableCollection或實現INotifyCollectionChanged的其他集合。

+0

RJ Lohan,謝謝你的提示。 GetContacts()實際上返回一個IList。 – kzub