WPF DataGrid:使用HorizontalAlignment时,所选行未正确突出显示
|
我有一个“ 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>
没有找到相关结果
已邀请:
1 个回复
傻寺俊擒
和(如果需要)