Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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在CellEditEnding事件后更改datagrid单元格背景_C#_Wpf_Datagrid_Cell_Background Color - Fatal编程技术网

C#WPF在CellEditEnding事件后更改datagrid单元格背景

C#WPF在CellEditEnding事件后更改datagrid单元格背景,c#,wpf,datagrid,cell,background-color,C#,Wpf,Datagrid,Cell,Background Color,我的C#wpf应用程序中有一个数据网格(DataGridMeterValues)。每次用户退出单元格的编辑模式时,都会触发CellEditEnding事件 现在,我希望在触发事件时更改单元格的背景 到目前为止,我得到的是: private void DataGridMeterValues_CellEditEnding(object sender, System.Windows.Controls.DataGridCellEditEndingEventArgs e) { // Code to ch

我的C#wpf应用程序中有一个数据网格(DataGridMeterValues)。每次用户退出单元格的编辑模式时,都会触发CellEditEnding事件

现在,我希望在触发事件时更改单元格的背景

到目前为止,我得到的是:

private void DataGridMeterValues_CellEditEnding(object sender, System.Windows.Controls.DataGridCellEditEndingEventArgs e)
{

// Code to change background color here

}
我可以使用以下代码更改整行的背景:

e.Row.Background = Brushes.Yellow;
现在我的问题是,我能做同样的事情吗?但只能对1个单元格(所选的一个)而不是整行

编辑:这是数据网格的XAML

<DataGrid Grid.Row="3"  Grid.Column="1" AutoGenerateColumns="False"  Name="DataGridMeterValues" ItemsSource="{Binding Path=MeterValuesList, UpdateSourceTrigger=PropertyChanged}" AlternatingRowBackground="LightGray" BorderBrush="Gray" BorderThickness="1" FrozenColumnCount="0" CanUserResizeColumns="False" CanUserResizeRows="False" Margin="2,0" CanUserSortColumns="False" SelectionMode="Single" CanUserReorderColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" HeadersVisibility="Column" GridLinesVisibility="All" AreRowDetailsFrozen="False" IsEnabled="True" CellEditEnding="DataGridMeterValues_CellEditEnding">
            <DataGrid.Resources>
                <Style x:Key="DataGridBase" TargetType="Control">
                    <Setter Property="LayoutTransform">
                        <Setter.Value>
                            <TransformGroup>
                                <RotateTransform Angle="-90" />
                                <ScaleTransform ScaleX="1" ScaleY="-1" />
                            </TransformGroup>
                        </Setter.Value>
                    </Setter>
                    <Setter Property="TextOptions.TextFormattingMode" Value="Display" />
                </Style >
                <Style TargetType="DataGridCell" BasedOn="{StaticResource DataGridBase}"/>
                <Style TargetType="DataGridColumnHeader" BasedOn="{StaticResource DataGridBase}"/>                  
            </DataGrid.Resources>

            <DataGrid.LayoutTransform>
                <TransformGroup>
                    <RotateTransform Angle="90" />
                    <MatrixTransform Matrix="-1, 0, 0, 1, 0, 0" />
                </TransformGroup>
            </DataGrid.LayoutTransform>

            <DataGrid.RowHeaderStyle >
                <Style TargetType="DataGridRowHeader">
                    <Setter Property="Content" Value="X" />
                </Style>
            </DataGrid.RowHeaderStyle>
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Action" >
                    <DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                                <Button Tag="{Binding}" Content="Activate" Width="50" BorderThickness="0" Margin="2" Background="{Binding Path=Activated}" Click="BtnActivate_Click" />
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Header="Name" Binding="{Binding Path=Title, UpdateSourceTrigger=PropertyChanged}" />
                <DataGridTextColumn Header="Meter Type" Binding="{Binding Path=Type, UpdateSourceTrigger=PropertyChanged}" />

            </DataGrid.Columns>
        </DataGrid>

我已经获取了选定行和列中单元格的框架元素。然后,我使用其父属性从该元素获取DataGridCell并设置其背景属性。:)


DataGridCell中可以有多个模板。我们最好获取DataGridCell并使用其背景属性

你将如何使用
SelectionUnit=“Cell”
?哦,我刚刚做了
FrameworkElement-element=e.Column.GetCellContent(e.Row)正常工作:)
private void DataGridMeterValues_CellEditEnding(object sender, System.Windows.Controls.DataGridCellEditEndingEventArgs e)
{

        FrameworkElement element = e.Column.GetCellContent(DataGridMeterValues.SelectedItem);
        (element.Parent as DataGridCell).Background = new SolidColorBrush(Colors.Red);

}