• wpf:DataGrid使用


                 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
                 xmlns:WpfToolkit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"

    1.    WpfToolkit:DataGrid在TableView.xaml中定义如下

            <WpfToolkit:DataGrid  x:Name="PlotViewDataGrid" 
              ItemsSource="{Binding DataGridSource, Mode=TwoWay}"  IsReadOnly="True"  SelectedItem="{Binding DataGridSelected}"   
                                  AutoGenerateColumns="True"   AutoGeneratedColumns="PlotViewDataGrid_AutoGeneratedColumns"  
                                  Width="685"    RowHeight="25"  Margin="0"  CanUserResizeRows="True"  SelectionMode="Single"  
                                  SelectedIndex="{Binding DataGridSelectedIndex, Mode=TwoWay}"  Grid.Row="0">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="SelectionChanged">
                        <i:InvokeCommandAction Command="{Binding GetSelectCommand}"
                                                   CommandParameter="{Binding SelectedItem,ElementName=PlotViewDataGrid}" />
                    </i:EventTrigger>
                    <i:EventTrigger EventName="MouseDoubleClick">
                        <i:InvokeCommandAction Command="{Binding DataGridDoubleClickCommand}"
                                                   CommandParameter="{Binding SelectedItem,ElementName=PlotViewDataGrid}" />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <WpfToolkit:DataGrid.RowStyle>
                    <Style TargetType="{x:Type WpfToolkit:DataGridRow}">
                        <Setter Property="Background" Value="Red" />
                    </Style>
                </WpfToolkit:DataGrid.RowStyle>
            </WpfToolkit:DataGrid>
    

    1.在TableView.xmal.cs文件中PlotViewDataGrid_AutoGeneratedColumns函数可以改变列宽

      private void PlotViewDataGrid_AutoGeneratedColumns(object sender, EventArgs e)         {

                double dgwidth = this.PlotViewDataGrid.Width;            

                int columnWidth = this.PlotViewDataGrid.Columns.Count;

                this.PlotViewDataGrid.HorizontalContentAlignment = (HorizontalAlignment)1;          

              for (int i = 0; i < this.PlotViewDataGrid.Columns.Count; i++)          

               {                

             this.PlotViewDataGrid.Columns[i].Width = new Microsoft.Windows.Controls.DataGridLength(dgwidth / columnWidth);            

               }      

       }

    2.在TableViewModel.cs文件中

          #region DataGridDoubleClickCommand
            RelayCommand<object> dataGridDoubleClickCommand = null;
            public ICommand DataGridDoubleClickCommand
            {
                get
                {
                    if (dataGridDoubleClickCommand == null)
                    {
                        dataGridDoubleClickCommand = new RelayCommand<object>((p) => OnDataGridDoubleClickCommand(p), (p) => CanDataGridDoubleClickCommand(p));
                    }
    
                    return dataGridDoubleClickCommand;
                }
            }
    
            private bool CanDataGridDoubleClickCommand(object p)
            {
                return true;
            }
    
            private void OnDataGridDoubleClickCommand(object p)
            {
                DataGridDoubleClickHandle(p);
            }
            #endregion

    3.DataGrid风格自定义
       <WpfToolkit:DataGrid.RowStyle>
                    <Style TargetType="{x:Type WpfToolkit:DataGridRow}">
                        <Setter Property="Background" Value="Red" />
                    </Style>
                </WpfToolkit:DataGrid.RowStyle>

    4.CanUserResizeRows="True"允许用户调整行高

    其他参考内容如下:

    (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)后台代码

    privatevoid Window_Loaded(object sender, RoutedEventArgs e)

    {

        datagrid.ItemsSource
    = AccessDAL.OleDbHelper.ExecuteDataTable("SELECT * from Customers").DefaultView;



    //双击DataGrid,显示相应信息
    privatevoid 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;

    }

     
    privatevoid datagrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)

    {

        Employee emp
    =datagrid.SelectedItem as Employee;

        MessageBox.Show(emp.Id.ToString());

    }

    (4)删除选中的多行数据

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

        }

    }
  • 相关阅读:
    ACM-ICPC ShangHai 2014
    DEBUG感想
    WireShark 使用日记
    C++ 备忘录
    BZOJ 1022 [SHOI2008]小约翰的游戏John
    高斯消元
    BZOJ3236 [Ahoi2013]作业
    BZOJ P3293&&P1045
    ZKW费用流的理解
    BZOJ 几道水题 2014-4-22
  • 原文地址:https://www.cnblogs.com/zzlp/p/3535774.html
Copyright © 2020-2023  润新知