• 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);
    }
    }
  • 相关阅读:
    将博客搬至CSDN
    mplayer的执行过程分析(本地、网络)
    ES6新特性概览
    ES6 块级作用域
    echarts各种字体颜色的修改
    js时间格式转换为几天前几小时几分钟等
    正则验证非法字符
    JS阻止事件冒泡函数
    cookie设置,读取,删除
    C/C++基础(三)
  • 原文地址:https://www.cnblogs.com/ljx111/p/14099606.html
Copyright © 2020-2023  润新知