WPF DataGrid:使用Horizo​​ntalAlignment时,所选行未正确突出显示

| 我有一个“ 0”,其中一列需要右对齐。为此,我使用
<DataGridTextColumn.CellStyle>
  <Style>
    <Setter Property=\"FrameworkElement.HorizontalAlignment\" Value=\"Right\"/>
  </Style>
</DataGridTextColumn.CellStyle>
可以正常工作,如下所示: 不幸的是,当选择一行时,对齐的单元格未正确突出显示。仅突出显示数据,但未突出显示数据左侧的空白区域,如下所示: 此外,数据左侧的区域不再对鼠标单击敏感。在上面的示例中,单击\ '12 .34 \'左侧将不会选择第一行(但是单击\'A1 \'右侧将是)。总体而言,这会带来糟糕的用户体验。 那么,如何在不破坏行选择的情况下执行
HorizontalAlignment
?我希望突出显示整个行,并且希望能够单击任意位置以选择一行。 我正在使用VS 2010,.NET 4,Win XP和Win 7。 重现我的示例的代码:
namespace WpfApplication2
{
  public class ListItem
  {
    public string FieldA { get; set; }
    public decimal FieldB { get; set; }
    public string FieldC { get; set; }
  }
}

<Window x:Class=\"WpfApplication2.MainWindow\"
        xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"
        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"
        xmlns:My=\"clr-namespace:WpfApplication2\" 
        Title=\"MainWindow\" Height=\"350\" Width=\"525\">
    <Window.Resources>
        <x:Array x:Key=\"List\" Type=\"{x:Type My:ListItem}\">
            <My:ListItem FieldA=\"A1\" FieldB=\"12.34\" FieldC=\"C1\"/>
            <My:ListItem FieldA=\"A2\" FieldB=\"1000.00\" FieldC=\"C2\"/>
            <My:ListItem FieldA=\"A3\" FieldB=\"987.6\" FieldC=\"C3\"/>
        </x:Array>
    </Window.Resources>
    <Grid>
        <DataGrid ItemsSource=\"{StaticResource List}\" AutoGenerateColumns=\"False\" SelectionUnit=\"FullRow\" >
            <DataGrid.Columns>
                <DataGridTextColumn Header=\"ColumnA\" Binding=\"{Binding Path=FieldA}\" Width=\"150\" />
                <DataGridTextColumn Header=\"ColumnB\" Binding=\"{Binding Path=FieldB, StringFormat=\'#,##0.00\'}\" Width=\"150\" >
                    <DataGridTextColumn.CellStyle>
                        <Style>
                            <Setter Property=\"FrameworkElement.HorizontalAlignment\" Value=\"Right\"/>
                        </Style>
                    </DataGridTextColumn.CellStyle>
                </DataGridTextColumn>
                <DataGridTextColumn Header=\"ColumnC\" Binding=\"{Binding Path=FieldC}\" Width=\"*\" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>
已邀请:
尝试
DataGridTextColumn.ElementStyle
和(如果需要)
DataGridTextColumn.EditingElementStyle

要回复问题请先登录注册