WPF数据网格行鼠标点击有一个非常奇怪的问题。当我点击一行时,行的数据移动到行的顶部。但是当它第一次加载时,所有行数据都是中心对齐的。
我是否遗漏了数据网格中的任何属性?
答案 0 :(得分:0)
当行未处于编辑模式时,WPF的DataGrid对单元格使用TextBlock。当它处于编辑模式时,使用TextBox。这两个控件都没有影响控件中垂直对齐的属性,但是使用样式可以将TextBox的VerticalAlignment设置为居中对齐。这可能会导致意外的副作用,因为现在将有一些编辑单元格的区域未被TextBox覆盖。
<DataGridTextColumn ...>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="{x:Type TextBox}">
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
答案 1 :(得分:0)
将以下CellStyle应用于DataGrid,并临时增加RowHeight以验证您是否获得了预期的行为。以下单元格样式在中心左右水平对齐。
<Window.Resources>
<Style x:Key="LeftAlignedCellStyle" TargetType="{x:Type WpfToolkit:DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type WpfToolkit:DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<WpfToolkit:DataGrid
RowHeight="40"
CellStyle="{StaticResource LeftAlignedCellStyle}"
ItemsSource="{Binding Path=GridData, Mode=OneWay}">
</WpfToolkit:DataGrid>