2011-04-20 54 views
3

我有DataGrid,其中一列需要對齊到右側。要做到這一點我用WPF DataGrid:使用Horizo​​ntalAlignment時,所選行未正確突出顯示

<DataGridTextColumn.CellStyle> 
    <Style> 
    <Setter Property="FrameworkElement.HorizontalAlignment" Value="Right"/> 
    </Style> 
</DataGridTextColumn.CellStyle> 

的正常工作,如下所示:

enter image description here

不幸的是,排列的孔不正確的時候選擇了一行突出顯示。只有數據被突出顯示,但空區中的數據的左邊是不是,如下所示:

enter image description here

此外,該區域中的數據的左邊是不是鼠標點擊敏感了。在上面的例子中,'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> 
+0

您是否嘗試過'Horizo​​ntalContentAlignment'? – 2011-04-20 06:55:36

+0

'FrameworkElement'沒有'Horizo​​ntalContentAlignment'屬性。你可以說得更詳細點嗎? – TomBot 2011-04-20 14:26:26

回答

5

嘗試DataGridTextColumn.ElementStyle和(如果需要)DataGridTextColumn.EditingElementStyle

相關問題