2011-06-14 56 views
0

這是我使用的代碼。我嘗試將VerticalAlignment設置爲Top,但是當顯示行詳細信息(展開顯示)時,該按鈕將移動到行的中心。DataGrid中的垂直對齊RowHeaderTemplate

<DataGrid.RowHeaderTemplate> 
<DataTemplate> 
    <Grid> 
     <Button x:Name="c_expandCollapseBtn" Cursor="Hand" Click="OnExpandCollapseClick" Content="+" 
       MinHeight="8" MinWidth="15" VerticalAlignment="Top" HorizontalAlignment="Left"/> 
    </Grid> 
</DataTemplate> 
</DataGrid.RowHeaderTemplate> 

回答

2

您正在設置按鈕內容的對齊方式。 繼承人是將行標題內容演示者置於頂部的樣式。

編輯

<Style x:Key="DataGridRowHeaderStyle" TargetType="{x:Type DataGridRowHeader}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type DataGridRowHeader}"> 
        <Grid> 
         <Microsoft_Windows_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}"> 
          <StackPanel Orientation="Horizontal"> 
           <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Top"/> 
           <Control SnapsToDevicePixels="false" Template="{Binding ValidationErrorTemplate, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" Visibility="{Binding (Validation.HasError), Converter={StaticResource bool2VisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}"/> 
          </StackPanel> 
         </Microsoft_Windows_Themes:DataGridHeaderBorder> 
         <Thumb x:Name="PART_TopHeaderGripper" Style="{StaticResource RowHeaderGripperStyle}" VerticalAlignment="Top"/> 
         <Thumb x:Name="PART_BottomHeaderGripper" Style="{StaticResource RowHeaderGripperStyle}" VerticalAlignment="Bottom"/> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+0

謝謝,但它仍然顯示在設置垂直對齊到網格後的中心 – John 2011-06-14 06:49:40

+0

我看到,當我在vs檢查它,所以我編輯我的答案,包括風格... – 2011-06-14 06:53:26

+0

好吧。在發表我的評論之前,我沒有注意到代碼。我嘗試了你提供的代碼,它適用於我。謝謝!!! – John 2011-06-14 06:56:02

0

您可以使用Snoop工具 - 這將幫助您調試可視元素的佈局。看起來網格本身與中心對齊。將VerticalAlignment =「Top」放置到網格中。