2012-08-14 160 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(); 

祝您好运!