2011-01-11 59 views
0

當我的DataGrid在TreeView的SelectedItemChanged事件上填充時,它找到對象並相應地創建行,但行填充不帶文本或只是空白。所以我知道這是找到我的物體,但它沒有正確顯示它們。有沒有人看到我犯了錯誤或提出任何更改或修復?先謝謝你!DataGrid在TreeView的SelectedItemChanged上填充空白行

這裏是設置DataGrid的ItemsSource時的CSHARP代碼(我用的.dbml和LINQ與Lambda表達式):

dgSystemSettings.ItemsSource = (tvSystemConfiguration.SelectedItem as SYSTEM_SETTINGS_GROUP) 
           .SYSTEM_SETTINGS_NAMEs 
           .Join(ssdc.SYSTEM_SETTINGS_VALUEs, x => x.SSN_ID, 
            y => y.SSV_SSN_ID, 
            (x, y) => new { SYSTEM_SETTINGS_NAME = x, 
            SYSTEM_SETTINGS_VALUE = y }); 

這裏是的.xaml:

<DataGrid Name="dgSystemSettings" 
       AutoGenerateColumns="False" 
       Height="447" Width="513" 
       DockPanel.Dock="Right" 
       ItemsSource="{Binding}" 
       VerticalAlignment="Top" 
       Margin="10,10,0,0"> 
     <DataGrid.Columns> 
      <DataGridTextColumn x:Name="colDisplayName" 
           Header="Name" 
           Binding="{Binding SSN_DISPLAY_NAME}"></DataGridTextColumn> 
      <DataGridTextColumn x:Name="colValue" 
           Header="Value" 
           Binding="{Binding SSV_VALUE}"></DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

SSN_DISPLAY_NAME是SYSTEM_SETTINGS_NAMES中的一列 SSV_VALUE是SYSTEM_SETTINGS_VALUES中的一列

我在我的lambda表達式中加入了表我只能在DataGrid中顯示這兩列。

+0

如果您正在進行綁定,則不需要在代碼中設置ItemsSource,並且如果未設置DataContext,則「列上的綁定」將不起作用。你是否爲父控件或視圖設置了DataContext? – Brady 2011-01-11 17:28:28

+0

@Brady,如果您爲DataGrid設置ItemsSource,那麼DataGridTextColumn的綁定工作。設置DataContext代替ItemsSource也可以。但是,這不是他遇到的問題。 – Paxenos 2011-01-11 17:32:33

回答

1

我相信,你可能希望將DataGridTextColumn的文字更改爲以下:

<DataGrid Name="dgSystemSettings" AutoGenerateColumns="False" Height="447" Width="513" DockPanel.Dock="Right" ItemsSource="{Binding}" VerticalAlignment="Top" Margin="10,10,0,0"> 
    <DataGrid.Columns> 
     <DataGridTextColumn x:Name="colDisplayName" Header="Name" Binding="{Binding SYSTEM_SETTING_NAME.SSN_DISPLAY_NAME}"></DataGridTextColumn> 
     <DataGridTextColumn x:Name="colValue" Header="Value" Binding="{Binding SYSTEM_SETTING_VALUE.SSV_VALUE}"></DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 

因爲你的行被填充物品的正確數量,我想它必須是具有約束力的問題。當您設置DataGrid的ItemsSource時,它會查找該對象的View集合。您的數據全部存在,您只需要在綁定中包含表名即可。代碼中的每個項目都包含表格的兩個對象,而表格包含您正在查找的屬性。

0

我在我的xaml中將AutoGenerateColumns設置爲False。將其設置爲True解決了這個問題。