Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:显示在绑定数据网格中编辑的单元格_C#_Wpf_Binding_Datagrid_Overriding - Fatal编程技术网

C# WPF:显示在绑定数据网格中编辑的单元格

C# WPF:显示在绑定数据网格中编辑的单元格,c#,wpf,binding,datagrid,overriding,C#,Wpf,Binding,Datagrid,Overriding,我正在尝试更改绑定数据网格中已编辑单元格的背景色。例如,在用户更改单元格中的值后,我将调用mydatagrid.Items.Refresh()来更新我列的其余值,并将编辑的单元格背景更改为淡粉色。您可以尝试使用DataGridBundColumn来做您想做的事 扩展其中一个DataGridColumns并在网格中使用它可能更容易。可能看起来像这样: class DataGridTextColumnEx : DataGridTextColumn { prot

我正在尝试更改绑定数据网格中已编辑单元格的背景色。例如,在用户更改单元格中的值后,我将调用mydatagrid.Items.Refresh()来更新我列的其余值,并将编辑的单元格背景更改为淡粉色。

您可以尝试使用DataGridBundColumn来做您想做的事

扩展其中一个DataGridColumns并在网格中使用它可能更容易。可能看起来像这样:

  class DataGridTextColumnEx : DataGridTextColumn
    {      
        protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
        {
            var element = base.GenerateElement(cell, dataItem);
            cell.Tag = dataItem;

            element.IsVisibleChanged += Element_IsVisibleChanged;

            return element;
        }

        private void Element_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            var textBlock = sender as TextBlock;
            var cell = textBlock.Parent as DataGridCell;
            var data = cell.Tag;
            if (textBlock.Visibility == Visibility.Visible)
            {
                //Use data to do validation...
                textBlock.Background = Brushes.LightPink;
            }
        }
    }

您可以尝试使用DataGridBoundColumn来执行您想要的操作

扩展其中一个DataGridColumns并在网格中使用它可能更容易。可能看起来像这样:

  class DataGridTextColumnEx : DataGridTextColumn
    {      
        protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
        {
            var element = base.GenerateElement(cell, dataItem);
            cell.Tag = dataItem;

            element.IsVisibleChanged += Element_IsVisibleChanged;

            return element;
        }

        private void Element_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            var textBlock = sender as TextBlock;
            var cell = textBlock.Parent as DataGridCell;
            var data = cell.Tag;
            if (textBlock.Visibility == Visibility.Visible)
            {
                //Use data to do validation...
                textBlock.Background = Brushes.LightPink;
            }
        }
    }