2013-07-03 58 views
1

我试图在WPF中获得具有某些特性的DataGrid,但我遇到了问题。 我已经制作了列,以便每列具有相同的宽度(宽度=“*”),并且它们填充整个可用空间。这很好,但现在有一个问题:当我试图通过点击一个空白点(基本上没有任何文本的地方)来选择一行(这是我需要做的),该行或单元格不会没有选择。DataGrid单元格(或行)选择仅在单击单元格的内容(文本)时起作用

让我后我的代码(忽略其工作完全绑定):

<DataGrid 
         ItemsSource="{Binding MyBinding}" 
         SelectedItem="{Binding Selected}" 
         AutoGenerateColumns="False" 
         IsReadOnly="True" 
         IsManipulationEnabled="False" 
         CanUserResizeColumns="False" 
         CanUserResizeRows="False" 
         GridLinesVisibility="Horizontal" 
         SelectionMode="Single" 
         SelectionUnit="FullRow" 
         RowHeaderWidth="0" 
         Height="Auto" 
         SelectedIndex="0" 
         > 
       <DataGrid.Columns> 
        <DataGridTextColumn Header="Param1" Binding="{Binding Param1}" Width="*" /> 
        <DataGridTextColumn Header="Param2" Binding="{Binding Param2}" Width="*"/> 
        ... 
        <DataGridTextColumn Header="Paramx" Binding="{Binding Paramx}" Width="*"/> 
       </DataGrid.Columns> 
       <DataGrid.CellStyle> 
        <Style TargetType="DataGridCell"> 
         <Setter Property="BorderThickness" Value="0"/> 
         <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center"/> 
        </Style> 
       </DataGrid.CellStyle> 
       <DataGrid.ColumnHeaderStyle> 
        <Style TargetType="DataGridColumnHeader"> 
         <Setter Property="HorizontalContentAlignment" Value="Center"/> 
        </Style> 
       </DataGrid.ColumnHeaderStyle> 


      </DataGrid> 

http://i.stack.imgur.com/c9wyp.png

正如你所看到的选择只影响单元格的内容,而不是电池本身。我希望它能在任何地方工作。

非常感谢您的帮助!

编辑:它似乎工作,因为我设置Horizo​​ntalAlignment拉伸。不过,我仍然希望它居中。

EDIT2:通过这样做解决:

<DataGrid.CellStyle> 
        <Style TargetType="{x:Type DataGridCell}"> 
         <Setter Property="BorderThickness" Value="0"/> 
         <Setter Property="FrameworkElement.HorizontalAlignment" Value="Stretch"/> 
         <Setter Property="Template"> 
          <Setter.Value> 
           <ControlTemplate TargetType="{x:Type DataGridCell}"> 
            <Grid Background="{TemplateBinding Background}"> 
             <ContentPresenter HorizontalAlignment="Center" /> 
            </Grid> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style> 
       </DataGrid.CellStyle> 

回答

1

你真的要设置TextAlignment属性为中心。但不幸的是,您无法从FrameworkElement访问该属性。

您可能最好使用DataGridTemplateColumn来获得所需的效果。

相关问题