Wpf中点击添加新增在DataGrid控件中的当前选中行下添加新的一行空白行或追加一行

WPF相关 专栏收录该内容
8 篇文章 0 订阅

列表中在选中的当前行的下一行添加新的一行(追加一行)

      解释:做添加的意思也就是给集合Add一行数据,这个Add也就是默认会添加到泛型集合的最后一行

      解释:1: Add(数据源);

                 2:方法换成Inset(索引+1,数据源);这实现按选中行添加。其中参数 :索引+1代表的意思是,选中行加1,也就                           是在当前选中行下去添加一行数据

 

 

实现过程:

1:如果做这个功能是不是要在获取控件的行号啊。

2:获取行号?

3:再想想,如如果我获取当前选中行的索引的话是不是可以按照索引添加1(在当前选中行下面添加一行)去实现效果?(也就是:当前行的索引数+1)

 

     首先我要获取DataGrid的选中索引:SelectedIndex 获取索引 Binding的是ViewModel的一个ing类型字段。把索引获取到。

 

在View页面的DataGrid控件新加一个SelectedIndex来获取当前的选中索引:所Binding的DataGridIndex是在ViewModel中添加的一个可监听属性变化的字段(int类型)


 <DataGrid  x:Name="MetroDataGrid" Grid.Row="1" Grid.Column="0"
                  RenderOptions.ClearTypeHint="Enabled"
                  TextOptions.TextFormattingMode="Display"
                  Margin="5"
                  RowHeaderWidth="40"
                  IsSynchronizedWithCurrentItem="True"
                  GridLinesVisibility="All"
                  HeadersVisibility="All"
                  SelectionUnit="FullRow"
                  SelectedIndex="{Binding DataGridIndex,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/*这个是获取的当前索引*/
                  ItemsSource="{Binding Path=Items}"/>

加上断点看了下ViewModel中的这个Binding字段DataGridIndex获取到选中行的索引了。因为我添加是调用的ViewModel中的Add的Command命令。

添加命令:


 private Void Add()
  {
        #region 在控件当前选中行下一行追加一行
        int selectIndex = DataGridIndex;
        if (selectIndex == 0)       // 如果没有选中行就默认添加,添加到最后一行
        {
           Items.Add(newInstance);
        }
         else                       // 有选中行,把获取过来的选中索引基础上+1 
        {
           Items.Insert(selectIndex + 1, newInstance);
        }
          this.CurrentItem = newInstance;
          MoveScrollbarToCurrentPosition(this.CurrentItem);
          this.IsEditEnable = true;

         #endregion
     
 }

 

  • 2
    点赞
  • 0
    评论
  • 3
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:技术工厂 设计师:CSDN官方博客 返回首页

打赏作者

招财进宝。。

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值