我有DataGrid
我正在使用MahApps
样式。我有一个需要居中的专栏;每次创建样式时,与该列关联的单元格在选中时的外观都会有所不同。
以下是我的DataGrid XAML。
<DataGrid ItemsSource="{Binding Path=DiariesForSelectedProject}"
AutoGenerateColumns="False"
HorizontalContentAlignment="Center"
HorizontalAlignment="Stretch">
<DataGrid.Columns>
<DataGridTextColumn Header="Number"
Binding="{Binding Path=Number}"
Width="Auto"
IsReadOnly="True" >
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="FrameworkElement.HorizontalAlignment"
Value="Center" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Date"
Binding="{Binding Path=Date, StringFormat=d}"
Width="Auto"
IsReadOnly="True"/>
<DataGridTextColumn Header="Inspector"
Binding="{Binding Path=Inspector}"
Width="Auto"
IsReadOnly="True" />
<DataGridTextColumn Header="Diary Status"
Binding="{Binding Path=Status}"
Width="Auto"
IsReadOnly="True" />
</DataGrid.Columns>
<DataGrid.ItemContainerStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=IsOwner}"
Value="True" />
<Condition Binding="{Binding Path=Status}"
Value="Supervisor Returned" />
</MultiDataTrigger.Conditions>
<Setter Property="Foreground"
Value="White" />
<Setter Property="Background"
Value="Red" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=IsOwner}"
Value="True" />
<Condition Binding="{Binding Path=Status}"
Value="Office Returned" />
</MultiDataTrigger.Conditions>
<Setter Property="Foreground"
Value="White" />
<Setter Property="Background"
Value="Red" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGrid.ItemContainerStyle>
</DataGrid>
我没有使用上面的CellStyle,而是尝试了以下内容:
<Style x:Key="DataGridColumnHeaderDataGridCellStyle"
TargetType="{x:Type DataGridCell}"
BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
然后为我的手机引用了这种风格。但是,最终结果两次都是相同的。列是居中的,但是当选择行时,DataGrid单元格具有不同的外观。
有人可以帮我解决如何正确居中的问题,而不是搞乱MahApps的风格吗?
谢谢!
答案 0 :(得分:1)
我使用XAMLSpy
解决了这个问题并查看了该行。事实证明,在应用样式的每个单元格上重置了背景颜色。为了解决这个问题,我只是将内容展示器包装在一个网格中,并将背景颜色设置为透明。
<Style x:Key="DataGridColumnHeaderDataGridCellStyle"
TargetType="{x:Type DataGridCell}"
BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="Transparent">
<ContentPresenter HorizontalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>