相关疑难解决方法(0)

如何让WPF DataGrid单元格正确对齐而不会使新行上的可选区域变小?

我正在使用WPF4.0 DataGrid.当双击新行中的单元格时,除非我已向该列添加单元格样式,否则一切正常.例如,我有一个数字列,我希望数据右对齐,所以xaml看起来像这样

<DataGridTextColumn Binding="{Binding Path=ImpaId}"
                    CellStyle="{StaticResource CellRightAlign}">
     <DataGridTextColumn.Header>
          <TextBlock  Style="{StaticResource DataGridHeader}">Impa</TextBlock>
     </DataGridTextColumn.Header>
</DataGridTextColumn>
Run Code Online (Sandbox Code Playgroud)

共享资源中的样式只是:

<Style x:Key="CellRightAlign">
    <Setter Property="Control.HorizontalAlignment"
            Value="Right" />
</Style>
Run Code Online (Sandbox Code Playgroud)

新行上的最终可选区域在图像中显示为小蓝色区域.这是用户点击的非常小的目标,这恰好是他们想要在新行上开始的最可能的列.

DataGrid单元格,宽度很小

如果我删除CellStyle,该区域按预期工作,但当然我失去了正确的对齐方式.

具有适当宽度的DataGrid单元格

有谁知道如何实现这两个目标?

我试过的事情

  1. 将绑定上的TargetNullValue设置为具有一定宽度的格式.这适用于现有行,但对新行没有影响.
  2. 在列上设置MinWidth,这不会影响新行可选区域的宽度.

有用的东西:

使用@AngelWPF答案中的信息,我可以使用CellStyle更改为使用ElementStyle,如下所示:

<DataGridTextColumn Binding="{Binding Path=ImpaId}"
                    CellStyle="{StaticResource CellRightAlign}">
Run Code Online (Sandbox Code Playgroud)

成为

<DataGridTextColumn Binding="{Binding Path=ImpaId}"
                    ElementStyle="{StaticResource CellRightAlign}">
Run Code Online (Sandbox Code Playgroud)

wpf xaml datagrid

58
推荐指数
4
解决办法
6万
查看次数

标签 统计

datagrid ×1

wpf ×1

xaml ×1