如何从wpf中的datagrid中提取数据?

时间:2011-11-07 15:57:11

标签: c# wpf datagrid

我很难从datagrid中提取数据。因为我在datagrid上使用了selectionchange事件。我设法获得选定的行和列索引。但我找不到任何属性来从datagrid或datagridrow或selectedcells获取确切的数据。希望得到你们的一些建议,欢呼。

2 个答案:

答案 0 :(得分:2)

将DataGrid绑定到包含数据的ItemsSource,然后您的SelectedItem将成为ItemsSource中的项目。

您上面有关于使用ComboBox的评论,所以这是一个例子:

<DataGrid ItemsSource="{Binding MyData}" AutoGernateColumns="False">
    <DataGrid.Columns>
        <DataGridComboBoxColumn ItemsSource="{Binding Path=DataContext.ComboBoxOptions, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
                                DisplayMemberPath="Name"
                                SelectedValuePath="Id"
                                SelectedValueBinding="OptionId" />
    </DataGrid.Columns>
</DataGrid>

DataGrid的DataContext将包含

ObservableCollection<SomeItem> MyData { get; set; }
ObservableCollection<Option> ComboBoxOptions{ get; set; }

SomeItem类的属性为OptionId,而Option类的属性为Id NameDataGrid.SelectedItem字段。

在此示例中,当您在DataGrid中选择项目时,SomeItem将包含{{1}}

请记住,在WPF中,您的数据(DataContext)是您的应用程序,您的UI元素(如ComboBoxes,TextBoxes,DataGrids等)都只是让用户与您的数据交互的漂亮界面

答案 1 :(得分:0)

在MouseDoubleClick事件中,使用dataGrid1.SelectedIteam作为Object。

代码应该像下面这样:

    private void dataGrid1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        edit(this.dataGrid1.SelectedItem as YourObject);
    }