WPF数据网格单元格式化事件
本文关键字:单元格 格式化 事件 单元 网格 数据 数据网 WPF | 更新日期: 2023-09-27 18:07:16
这是我在stackoverflow上的第一个问题,即使我已经使用它2年了。(很有用)。如果这个问题问得不恰当,很抱歉。
我正在将一个项目从WinForms移动到WPF,我遇到了一些麻烦。我有一个数据网格,在SQL请求上自动填充,当单元格格式化事件'DataGridViewCellFormatting'被触发。我用这个事件使线条颜色不同。(更用户友好的)
WinForm上的代码:
private void ChangerCouleur(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
row.DefaultCellStyle.SelectionBackColor = Color.Orange;
row.DefaultCellStyle.SelectionForeColor = Color.Black;
if (e.RowIndex % 2 == 0)
{
row.DefaultCellStyle.BackColor = Color.Khaki;
row.DefaultCellStyle.ForeColor = Color.Black;
}
else
{
row.DefaultCellStyle.BackColor = Color.Goldenrod;
row.DefaultCellStyle.ForeColor = Color.Black;
}
}
我在WPF中找不到相同的事件。
Thanks in advance
DataGridCell
和每个WPF可视化项目都包含一个Initialized
事件。对于您的目的,这可能是您正在寻找的。也有Loaded
事件,如果你需要与你的项目互动后,它已经第一次布局和渲染。
您可能会发现,通过使用DataGrid.AlternatingRowBackground
:
<DataGrid RowBackground="Khaki"
AlternatingRowBackground="Goldenrod"
Foreground="Black">
<DataGrid.Resources>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Orange"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
</DataGrid>
看看你的代码样本,我想你想改变交替行的颜色?
如果是这样,可以使用XAML样式:
<Style TargetType="{x:Type DataGrid}">
<Setter Property="Background" Value="#FFF" />
<Setter Property="AlternationCount" Value="2" />
</Style>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Background" Value="Khaki"/>
<Setter Property="Foreground" Value="Black"/>
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="Goldenrod"/>
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>