2012-08-14 91 views
0

我有一個WPF形式以下數據網格:填充DataGrid與LINQ查詢

<DataGrid Name="DataGrid" AutoGenerateColumns="False" VerticalScrollBarVisibility="Auto"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Name" Width="200"></DataGridTextColumn> 
     <DataGridTextColumn Header="Text" Width="200"></DataGridTextColumn> 
     <DataGridTemplateColumn Header="Edit" Width="50"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Button>View Details</Button> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

而且我想從我的代碼填充它。我使用LINQ語句來獲取值我喜歡把在DataGrid

var query = 
    (
     from modules ... 
     join ... 
     join ... 
     where ... 
     select new { ID = modules.ID, Name = strings.Name, Text = stringTexts.Text } 
    ); 

我想從查詢名稱和文本來填充列「名稱」和「文本」,但我也希望每行都有一個按鈕,並且當按下該按鈕時,我必須知道被按下的行的ID,但ID不一定在網格上顯示。

如何用這些值填充網格?

+0

你試過了嗎?只需設置DataGrid.DataSource = query; DataGrid.DataBind();'看看它是否工作。該按鈕是第二步 – 2012-08-14 19:01:01

回答

2

泰爾柱以結合使用

<DataGridTextColumn Header="Name" Width="200" Binding="{Binding Name}" /> 

等其他列的屬性。

代碼

那麼後面

DataGrid.ItemsSource = query; 
+0

好吧!但我如何通過ID?我必須把它變成一個隱藏的列嗎? – ProgrammerAtWork 2012-08-14 19:09:35

+0

@ProgrammerAtWorkL:簡單的'' – 2012-08-14 19:17:07

0

這應該爲你工作:

Grid.DataSource = from x in modules 
        select new 
        { 
         x.Name, 
         x.Text 
        }; 
Grid.DataBind(); 

祝您好運!