2016-03-01 3 views
1

Возможно ли, чтобы заголовки строк DataGrid отображались в правой части сетки? Я попытался найти некоторые шаблоны управления для DataGrid, но ни один из них не позволяет изменить положение заголовков строк. СпасибоЗаголовки строк DataGrid с правой стороны DataGrid

Edit: в картинках, я хочу, чтобы превратить это

enter image description here

в этом

enter image description here

+0

Вы пробовали somthing – Meer

ответ

1

Не идеальное решение, но обходной путь, я в конечном итоге добавление столбца, связывая его на то, что я хочу поставить в заголовке строки и стиль его выглядеть как заголовки столбцов строки.

0

refrerence: http://blog.magnusmontin.net/2014/08/18/right-aligned-row-numbers-datagridrowheader-wpf/

enter image description here

public class Country 
    { 
    public string Name { get; set; } 
    public string Continent { get; set; } 
    } 
<DataGrid ItemsSource="{Binding Countries}" AutoGenerateColumns="False"> 
<DataGrid.Columns> 
    <DataGridTextColumn Header="Country" Binding="{Binding Name}"/> 
</DataGrid.Columns> 
<DataGrid.RowHeaderTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding DataContext.Continent, 
        RelativeSource={RelativeSource AncestorType=DataGridRow}}"></TextBlock> 
    </DataTemplate> 
</DataGrid.RowHeaderTemplate> 
<DataGrid.RowHeaderStyle> 
    <Style TargetType="{x:Type DataGridRowHeader}"> 
     <!-- Override ControlTemplate --> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type DataGridRowHeader}"> 
        <Grid xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero2"> 
         <Themes:DataGridHeaderBorder BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" IsPressed="{TemplateBinding IsPressed}" 
                  IsHovered="{TemplateBinding IsMouseOver}" IsSelected="{TemplateBinding IsRowSelected}" 
                  Orientation="Horizontal" Padding="{TemplateBinding Padding}" 
                  SeparatorBrush="{TemplateBinding SeparatorBrush}" 
                  SeparatorVisibility="{TemplateBinding SeparatorVisibility}" 
                  HorizontalAlignment="Right"> 
          <StackPanel Orientation="Horizontal"> 
           <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
                  VerticalAlignment="Center"/> 
           <Control SnapsToDevicePixels="False" Template="{Binding ValidationErrorTemplate, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type DataGridRow}}}"> 
            <Control.Visibility> 
             <Binding Path="(Validation.HasError)" RelativeSource="{RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type DataGridRow}}"> 
              <Binding.Converter> 
               <BooleanToVisibilityConverter/> 
              </Binding.Converter> 
             </Binding> 
            </Control.Visibility> 
           </Control> 
          </StackPanel> 
         </Themes:DataGridHeaderBorder> 
         <Thumb x:Name="PART_TopHeaderGripper" VerticalAlignment="Top"> 
          <Thumb.Style> 
           <Style TargetType="{x:Type Thumb}"> 
            <Setter Property="Height" Value="8"/> 
            <Setter Property="Background" Value="Transparent"/> 
            <Setter Property="Cursor" Value="SizeNS"/> 
            <Setter Property="Template"> 
             <Setter.Value> 
              <ControlTemplate TargetType="{x:Type Thumb}"> 
               <Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"/> 
              </ControlTemplate> 
             </Setter.Value> 
            </Setter> 
           </Style> 
          </Thumb.Style> 
         </Thumb> 
         <Thumb x:Name="PART_BottomHeaderGripper" VerticalAlignment="Bottom"> 
          <Thumb.Style> 
           <Style TargetType="{x:Type Thumb}"> 
            <Setter Property="Height" Value="8"/> 
            <Setter Property="Background" Value="Transparent"/> 
            <Setter Property="Cursor" Value="SizeNS"/> 
            <Setter Property="Template"> 
             <Setter.Value> 
              <ControlTemplate TargetType="{x:Type Thumb}"> 
               <Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"/> 
              </ControlTemplate> 
             </Setter.Value> 
            </Setter> 
           </Style> 
          </Thumb.Style> 
         </Thumb> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</DataGrid.RowHeaderStyle> 

+0

Я не хочу, чтобы текст в заголовках был выровнен по правому краю. Мне нужен заголовок, чтобы перейти в правую сторону сетки. – amnesyc

Смежные вопросы