DataGrid行值在鼠标单击时更改位置

时间:2010-08-10 13:06:36

标签: c# wpf datagrid

WPF数据网格行鼠标点击有一个非常奇怪的问题。当我点击一行时,行的数据移动到行的顶部。但是当它第一次加载时,所有行数据都是中心对齐的。

我是否遗漏了数据网格中的任何属性?

2 个答案:

答案 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>