小编Enr*_*ico的帖子

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

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

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

这是我到目前为止所得到的:

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

// Code to change background color here

}
Run Code Online (Sandbox Code Playgroud)

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

e.Row.Background = Brushes.Yellow;
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,我可以做同样的事情,但仅针对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" …
Run Code Online (Sandbox Code Playgroud)

c# wpf datagrid cell background-color

3
推荐指数
1
解决办法
6559
查看次数

从新创建的窗口访问主窗口datacontext

在我的MainWindow中,我创建了一个包含不同设置的类的新实例.设置类的参数后,我将datacontext =设置为该类.

public partial class MainWindow : Window
{

 private MeasConSettings mMeasConSettings = new MeasConSettings();

  public MainWindow()
  {
    InitializeComponent();
    DataContext = mMeasConSettings;
  }

  private void MenuComm_Click(object sender, RoutedEventArgs e)
  {// See code below}

}
Run Code Online (Sandbox Code Playgroud)

现在我还有一个打开一个新窗口的函数,这个窗口包含一个文本框,其文本应绑定到MainWindow的datacontext.

    private void MenuComm_Click(object sender, RoutedEventArgs e)
    {
        FrmSettings newWindow = new FrmSettings();
        newWindow.DataContext = mMeasConSettings;
        newWindow.TxtComm.Text = mMeasConSettings.CommSettings;
        newWindow.Show();
    }
Run Code Online (Sandbox Code Playgroud)

此代码使用正确的内容填充newWindow的文本框,但由于在更改文本框中的文本(新创建的窗口中的TxtComm)后datacontext未更新,因此它不会受到限制.

文本框的XAML代码示例:

<TextBox Grid.Row="1" Grid.Column="3" Margin="2,0"  Name="TxtComm" DataContext="{Binding Path=CommSettings, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)

"CommSettings"是MeasConsettings类的成员

public class MeasConSettings
{
    private string mCommSettings;

    public string CommSettings
    {
        get
        { …
Run Code Online (Sandbox Code Playgroud)

c# wpf datacontext window

2
推荐指数
1
解决办法
6726
查看次数

标签 统计

c# ×2

wpf ×2

background-color ×1

cell ×1

datacontext ×1

datagrid ×1

window ×1