我的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) 在我的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)