二、WPF datagrid 特定行变色

public void Color()
{
  DataGridRow row1 = (DataGridRow)this.dgSource.ItemContainerGenerator.ContainerFromIndex(i); if (row1 != null) row1.Background = new SolidColorBrush(Colors.Red);
}

这里有个坑,初始化时不能变色,必须等datagrid完成渲染后才能进行这种行变色。

 

因而先把form show 出来之后才执行变色方法。这个方法因为莫名其妙的BUG会导致变色不是我们想要的效果!!

CompareForm cf = new CompareForm();
cf.Show();
cf.Color();

 

第二种方法。用datagrid 的 Dg_LoadingRow方法

 private void Dg_LoadingRow(object sender, DataGridRowEventArgs e)
        {
            DataGridRow row = e.Row;
            OrgTypeAuthResponseModel dataRow = e.Row.Item as OrgTypeAuthResponseModel;
            if (dataRow == null)
                return;
            if (dataRow.Level == 1)//新字段紫色
            {
                if (row != null)
                    row.Background = new SolidColorBrush(Colors.LightBlue);
            }
            else if (dataRow.Level == 2)
            {
                if (row != null)
                    row.Background = new SolidColorBrush(Colors.LightCyan);
            }
            else
            {
                if (row != null)
                    row.Background = new SolidColorBrush(Colors.White);
            }
        }

 

转载于:https://www.cnblogs.com/cvol/p/10647833.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF DataGrid控件提供了方便的方法来实现拖动的功能。要在WPF DataGrid中启用拖动功能,我们需要遵循以下几个步骤。 1. 首先,我们需要为DataGrid控件设置CanUserSortColumns属性为False,以确保拖动功能可用,并防止其它为干扰拖动操作。 ``` <DataGrid CanUserSortColumns="False" ...> ``` 2. 然后,我们可以通过设置DataGrid控件的SelectionMode属性为Single或Extended来指定拖动的选择模式。 ``` <DataGrid SelectionMode="Extended" ...> ``` 3. 接下来,在XAML中为DataGrid控件添加PreviewMouseLeftButtonDown事件处理程序。 ``` <DataGrid PreviewMouseLeftButtonDown="DataGrid_PreviewMouseLeftButtonDown" ...> ``` 4. 在事件处理程序中,我们可以使用VisualTreeHelper类的FindAncestor方法来获取被点击的。 ```csharp private void DataGrid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { var row = VisualTr eeHelper.GetParent(e.OriginalSource as FrameworkElement); // 如果获取的不为空,则启动拖动操作 if (row != null && row.GetType() == typeof(DataGridRow)) { DragDrop.DoDragDrop(row, row.DataContext, DragDropEffects.Move); } } ``` 5. 最后,在DataGrid控件上设置Drop事件处理程序,以执在拖放操作结束时要执的逻辑。例如,我们可以在此处进位置交换的操作。 ```csharp <DataGrid Drop="DataGrid_Drop" ...> ``` ```csharp private void DataGrid_Drop(object sender, DragEventArgs e) { var targetRow = VisualTreeHelper.GetParent(e.OriginalSource as FrameworkElement); // 获取拖放的数据对象 var data = e.Data.GetData(typeof(DataObject)); // 如果目标不为空,则执位置交换操作 if (targetRow != null && targetRow.GetType() == typeof(DataGridRow) && data != null) { var sourceItem = ((DataGridRow)data).DataContext; var targetItem = ((DataGridRow)targetRow).DataContext; // 执位置交换操作 } } ``` 通过以上步骤,我们可以实现在WPF DataGrid中拖动的功能。这样,用户就可以通过拖动来改变的位置,实现自定义的排序或重新排列的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值