2013-07-03 81 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來獲得所需的效果。

相關問題