2010-01-20 123 views
7

是否可以在WPF中設置GroupBoxHeader的位置對齊?默認設置是放置在GroupBox提綱的左上角,但我希望它位於頂部。我知道,你可以使用設置文本的屬性:WPF Groupbox標題位置對齊

<GroupBox Grid.Row="1" HorizontalAlignment="Center"> 
    <GroupBox.Header> 
     <TextBlock Text="Cash Match" Foreground="Black" FontWeight="Bold"/> 
    </GroupBox.Header> 
</GroupBox> 

但我期待以設置它的位置對於GroupBox輪廓。

回答

12

很簡單!只要編輯組框模板:

在Blend,請執行下列操作:

  • 右鍵點擊分組框>編輯模板>編輯複製> OK
  • 搜索以下部分:

    <Border x:Name="Header" Padding="3,1,3,0" 
         Grid.Column="1" Grid.Row="0" Grid.RowSpan="2"> 
        ... 
    </Border> 
    
  • 更改Grid.Column2

  • 還設置HorizontalAlignment="Right"

您剛剛將標頭對齊到正確的位置!但它背後的白色差距。爲此,

  • 現在搜索以下部分:

    <Border BorderBrush="White" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="4" Grid.ColumnSpan="4" Grid.Row="1" Grid.RowSpan="3"> 
        <Border.OpacityMask> 
         ... 
        </Border.OpacityMask> 
        ... 
    </Border> 
    
  • 添加RenderTransformOrigin="0.5,0.5"到邊境僅上述

  • ,添加以下代碼(這將轉移「白隙」後面標題右:

    <Border.RenderTransform> 
        <ScaleTransform ScaleX="-1"/> 
    </Border.RenderTransform> 
    

你完成了!你剛剛得到一個GroupBox與右對齊的標題!

請告訴我,如果這是你所要求的。

+0

謝謝!我希望這是一個我忽視的財產,但這個接近工作。 – ambog36 2010-01-22 00:47:17

+1

沒問題!但是如果這個答案解決了你的問題,請將其標記爲已接受,以便面臨類似問題的其他人可以依靠它。 – mg007 2010-01-23 14:15:56

2

更改組合框標題符號將導致不符合操作系統的控件。

因此,我認爲你將無法使用默認樣式進行更改。自定義模板將解決您的問題。