我目前正在构建一个使用DataGrid保存表的WPF窗口。绑定和更新工作正常,我也很鄙视样式,但在选择时我遇到了麻烦。这是先决条件:
这是我的表的源代码:(是的,我知道我确实设置了3次选择颜色,一次用于DataGrid,一次用于行,一次用于单元格。我想也许其中一个会帮助,但事实并非如此。)
<DataGrid x:Name="dgv" SelectionMode="Single" SelectionUnit="FullRow" AutoGenerateColumns="False" Grid.Column="0" Grid.RowSpan="3" Margin="8" RowHeight="32" GridLinesVisibility="Horizontal" HeadersVisibility="Column" HorizontalScrollBarVisibility="Hidden"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
CanUserSortColumns="True"
IsReadOnly="True"
LoadingRow="dgv_LoadingRow"
>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"></SolidColorBrush>
</Style.Resources>
<Setter Property="VerticalAlignment" Value="center"></Setter>
<Setter Property="Padding" Value="4"></Setter>
<Setter Property="Margin" Value="4"></Setter>
</Style>
</DataGrid.CellStyle>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"></SolidColorBrush>
</Style.Resources>
</Style>
</DataGrid.RowStyle>
<DataGrid.Style>
<Style TargetType="DataGrid">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"></SolidColorBrush>
</Style.Resources>
</Style>
</DataGrid.Style>
然后继续使用Column-和RowDefinitions ......
我遇到了以下问题:
以下是结果的屏幕截图:
答案 0 :(得分:1)
如果要删除单元格定义中的边距怎么办?这是因为细胞占据了额外的空间而红色没有覆盖那个空间。如果你删除了保证金,你会得到你想要的东西吗?我认为真正的答案可能在DataGrid.RowBackground
[财产] [1]。
物业价值 键入:System.Windows.Media.Brush 绘制一行背景的画笔。注册的默认值为null。有关可以影响该值的更多信息,请参阅DependencyProperty。
您可以在IsSelected状态下使用触发器来设置颜色。默认情况下,选择DataGrid的整行。
<DataGrid Name="dataGrid1" Margin="12,12,0,0">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="LightBlue" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
答案 1 :(得分:0)
为了更改默认的背景行选择。你需要 1)编辑datagridrow样式&amp;模板(即http://msdn.microsoft.com/en-us/library/cc278066%28v=vs.95%29.aspx) 2)处理selectionchanged事件和更改行的背景。 3)或在datagrid行加载的事件中获取childrenoftype矩形等于&#34; BackgroundRectangle&#34;并设置你想要的颜色 - 所以使用它对数据网格中的所有行都有影响,它类似于1但在后面的代码中执行此操作。
希望这会给你一些想法。