我很难从datagrid中提取数据。因为我在datagrid上使用了selectionchange事件。我设法获得选定的行和列索引。但我找不到任何属性来从datagrid或datagridrow或selectedcells获取确切的数据。希望得到你们的一些建议,欢呼。
答案 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
Name
和DataGrid.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);
}