wpf - 如何使 WPF DataGrid 单元格右对齐而不使新行上的可选区域变小?

标签 wpf xaml datagrid

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

<DataGridTextColumn Binding="{Binding Path=ImpaId}"
                    CellStyle="{StaticResource CellRightAlign}">
     <DataGridTextColumn.Header>
          <TextBlock  Style="{StaticResource DataGridHeader}">Impa</TextBlock>
     </DataGridTextColumn.Header>
</DataGridTextColumn>

共享资源中的样式只是:

<Style x:Key="CellRightAlign">
    <Setter Property="Control.HorizontalAlignment"
            Value="Right" />
</Style>

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

DataGrid cell with tiny width

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

DataGrid cell with proper width

有谁知道如何实现这两者吗?

我尝试过的事情

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

有效的方法:

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

<DataGridTextColumn Binding="{Binding Path=ImpaId}"
                    CellStyle="{StaticResource CellRightAlign}">

成为

<DataGridTextColumn Binding="{Binding Path=ImpaId}"
                    ElementStyle="{StaticResource CellRightAlign}">

最佳答案

您可以在目标为 TextBlockDataGridTextColumn 上应用 ElementStyle 并将其右对齐,这样就可以了。

      <DataGridTextColumn Binding="{Binding Path=ImpaId}">
          <DataGridTextColumn.Header>
               <TextBlock  Style="{StaticResource
                                  DataGridHeader}">
                    Impa
               </TextBlock>
          </DataGridTextColumn.Header>
          <DataGridTextColumn.ElementStyle>
              <Style TargetType="{x:Type TextBlock}">
                  <Setter Property="HorizontalAlignment" Value="Right" />
              </Style>
          </DataGridTextColumn.ElementStyle>
      </DataGridTextColumn> 

关于wpf - 如何使 WPF DataGrid 单元格右对齐而不使新行上的可选区域变小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7800367/

相关文章:

c# - 移至CollectionViewSource中的特定项目?

wpf - 如何将Silverlight项目或控件转换为WPF

wpf - 在 WPF 数据上下文中获取控件高度

c# - 在 silverlight 中刷新 DataGrid

javascript - Dojo EnhancedGrid 嵌套排序不起作用

c# - DataGridColumnHeader 中的 UserControl 不拉伸(stretch)

c# - DataGrid 显示内容值为 'System.Data.DataRowView'

xaml - Xamarin.Forms 如何在 VisualState 中使用 Xamarin Community Toolkit TouchEffect

c# - 为什么我的下拉菜单感觉很笨重?

.net - 如何使 DataGridCheckBoxColumn 可编辑而不需要额外的点击?