从 selecteditem wpf datagrid 获取数据
Getting data from selecteditem wpf datagrid
我正在尝试从我的 SelectedItem 中获取此数据项。
我使用一个名为 grd 的 DataGrid。这是在普通数据网格上扩展的自定义数据网格。
但我想将值 'DATA' 放入文本框中,以便找出插入符号索引。
到目前为止我的代码:
private void Selected_TextBox_Index (Object sender, MouseButtonEventArgs e) {
FileEditorDataGrid grd = (FileEditorDataGrid)sender;
TextBox textBox = new TextBox();
textBox.Text = grd.SelectedItem.ToString();
DataRowView dataRow;
Int32 selectedIndex;
selectedIndex = grd.SelectedIndex;
dataRow = grd.Items.GetItemAt(selectedIndex) as DataRowView;
Int64 cursorPos = textBox.CaretIndex;
if (ViewModel.TextBoxCursorCommand.CanExecute(null)) {
ViewModel.TextBoxCursorCommand.Execute(cursorPos);
}
} // Selected_TextBox_Index
使用以下方法解决:
var dataInTheItem = selectedItem.GetType().GetProperty("Data").GetValue(grd.SelectedItem);
只需将 SelectedItem
转换为您的数据类型并直接访问 属性:
var dataInTheItem = (grd.SelectedItem as YourClass)?.Data;
无论是在可维护性和可读性方面,还是在性能方面,这都比使用反射要好。
我正在尝试从我的 SelectedItem 中获取此数据项。
我使用一个名为 grd 的 DataGrid。这是在普通数据网格上扩展的自定义数据网格。
但我想将值 'DATA' 放入文本框中,以便找出插入符号索引。
到目前为止我的代码:
private void Selected_TextBox_Index (Object sender, MouseButtonEventArgs e) {
FileEditorDataGrid grd = (FileEditorDataGrid)sender;
TextBox textBox = new TextBox();
textBox.Text = grd.SelectedItem.ToString();
DataRowView dataRow;
Int32 selectedIndex;
selectedIndex = grd.SelectedIndex;
dataRow = grd.Items.GetItemAt(selectedIndex) as DataRowView;
Int64 cursorPos = textBox.CaretIndex;
if (ViewModel.TextBoxCursorCommand.CanExecute(null)) {
ViewModel.TextBoxCursorCommand.Execute(cursorPos);
}
} // Selected_TextBox_Index
使用以下方法解决:
var dataInTheItem = selectedItem.GetType().GetProperty("Data").GetValue(grd.SelectedItem);
只需将 SelectedItem
转换为您的数据类型并直接访问 属性:
var dataInTheItem = (grd.SelectedItem as YourClass)?.Data;
无论是在可维护性和可读性方面,还是在性能方面,这都比使用反射要好。