wpf datagrid 行双击事件
https://docs.devexpress.com/WPF/7875/index
Xaml:
<DataGrid ItemsSource="{Binding SessionList}"
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"
AutoGenerateColumns="False"
ScrollViewer.CanContentScroll="False"
IsReadOnly="True"
HorizontalScrollBarVisibility="Auto"
SelectionMode="Single"
VerticalScrollBarVisibility="Auto"
MouseDoubleClick="datagrid_MouseDoubleClick"
CanUserAddRows="True"/>
cs代码:
private void datagrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
DataGrid datagrid = sender as DataGrid;
Point aP = e.GetPosition(datagrid);
IInputElement obj = datagrid.InputHitTest(aP);
DependencyObject target = obj as DependencyObject;
while (target != null)
{
if (target is DataGridRow)
{
break;
}
target = VisualTreeHelper.GetParent(target);
}
}
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick" >
<i:InvokeCommandAction Command="{Binding DataGridEditCommand}" CommandParameter="{ Binding ElementName=dataGrid1, Path=SelectedItem}" />
</i:EventTrigger>
</i:Interaction.Triggers>
// 获取点击行的数据
DataGrid datagrid = sender as DataGrid;
Bom row = datagrid.SelectedItem as Bom;
WPF DataGrid使用简介
1)自动生成列 <DataGrid AutoGenerateColumns= "True" Name= "datagrid" CanUserAddRows= "False" MouseDoubleClick= "datagrid_MouseDoubleClick" /> 2)取消自动生成列,手动绑定到相应字段 <DataGrid AutoGenerateColumns= "False" Name= "datagrid" CanUserAddRows= "False" MouseDoubleClick= "datagrid_MouseDoubleClick" > <DataGrid.Columns> <DataGridTextColumn Header= "编号" Binding= "{Binding ID}" ></DataGridTextColumn> <DataGridTextColumn Header= "公司" Binding= "{Binding CompanyName}" ></DataGridTextColumn> <DataGridTextColumn Header= "固定资产" Binding= "{Binding FixedAssets}" Width = "*" ></DataGridTextColumn> </DataGrid.Columns> </DataGrid> 最后一列设置Width = "*" 是为了取消空白列。 (3)后台代码 private void Window_Loaded( object sender, RoutedEventArgs e) { datagrid.ItemsSource = AccessDAL.OleDbHelper.ExecuteDataTable( "SELECT * from Customers" ).DefaultView; } //双击DataGrid,显示相应信息 private void datagrid_MouseDoubleClick( object sender, MouseButtonEventArgs e) { DataRowView row = datagrid.SelectedItem as DataRowView; MessageBox.Show(row[ "id" ].ToString()); } //如果绑定到对象集合,如ObservableCollection<Employee>,代码如下: ObservableCollection<Employee> col; public EmployeeManage() { InitializeComponent(); col = new ObservableCollection<Employee>(); col.Add( new Employee() { Id = 1, Name = "Jim" , Salary = 2500.50f }); col.Add( new Employee() { Id = 2, Name = "John" , Salary = 2600.50f }); datagrid.ItemsSource = col; } private void datagrid_MouseDoubleClick( object sender, MouseButtonEventArgs e) { Employee emp=datagrid.SelectedItem as Employee; MessageBox.Show(emp.Id.ToString()); } (4)删除选中的多行数据 private void Delete_Click( object sender, RoutedEventArgs e) { for ( int i = datagrid.SelectedItems.Count - 1; i >= 0; i--) { Good good = datagrid.SelectedItems[i] as Good; goods.Remove(good); } } |