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);}} |

浙公网安备 33010602011771号