wpf datagrid选中项改变底色完整程序
时间: 2024-09-20 14:15:26 浏览: 49
在.NET 4中为WPF DataGrid实现复制和粘贴
在Windows Presentation Foundation (WPF)中,要在DataGrid控件中实现选中项改变底色的功能,你可以创建一个自定义的`DataGridCellStyle`,然后关联到DataGrid的`SelectedRowBackground`属性上。以下是一个简单的示例程序:
```xml
<!-- XAML -->
<Window x:Class="YourNamespace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<SolidColorBrush x:Key="SelectedBackgroundColor" Color="#FFBFBF"/>
</Window.Resources>
<DataGrid ItemsSource="{Binding YourDataSource}"
SelectionChanged="DataGrid_SelectionChanged">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="{StaticResource SelectedBackgroundColor}"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
</Window>
```
在这个例子中,我们首先在窗口资源中定义了一个名为`SelectedBackgroundColor`的 SolidColorBrush,并设置了选择项背景颜色为浅粉色。接着,在DataGrid的`Resources`部分添加了这个样式,当DataGrid的选中项发生变化时,`SelectionChanged`事件会被触发。
接下来是C#部分的`DataGrid_SelectionChanged`方法:
```csharp
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count > 0 && e.RemovedItems.Count == 0)
{
// 当有新的行被选中时,更新背景色
var selectedRow = ((DataGrid)sender).SelectedItem as FrameworkElement;
if (selectedRow != null)
{
selectedRow.Background = new SolidColorBrush(Colors.LightBlue);
}
}
}
```
在这个方法里,我们检查是否有新增加的选中项,并将新选中的行背景色设置为浅蓝色。如果删除了某个选中的项目,背景色会自动恢复到原来的设定。
阅读全文