2012-08-01 51 views
3

我有一個(右向)擴展器,它應該在展開時隱藏頭部,並且在摺疊時顯示一些旋轉到垂直向下的文本。 我設法這個使用下面的代碼來實現:擴展器頭部的旋轉文本的寬度不正確

<Expander Grid.Column="1" ExpandDirection="Left" 
     IsExpanded="True" Name="rightHandExpander" 
     MaxWidth="{Binding RelativeSource={RelativeSource PreviousData}}"> 
    <Expander.Header> 
     <TextBlock Text="Header text" RenderTransformOrigin="0,0" 
      Visibility="{Binding IsExpanded, RelativeSource={RelativeSource 
         AncestorType={x:Type Expander}, Mode=FindAncestor}, 
         Converter={StaticResource boolToVisibilityConverter}}"> 
      <TextBlock.LayoutTransform> 
       <TransformGroup> 
        <RotateTransform CenterX="25" CenterY="25" Angle="90" /> 
       </TransformGroup> 
      </TextBlock.LayoutTransform> 
     </TextBlock> 
    </Expander.Header> 
    <!-- controls here --> 
</Expander> 

然而,當擴張器崩潰,頭佔用了太多的佔用空間文本旋轉,但頭部的寬度似乎仍然如同它沒有。

在代碼隱藏中使用VisualTreeHelper,我發現擴展器的頭部,邊框和dockpanel太大,但內部切換按鈕的大小正確。我嘗試將標題,邊框和dockpanel的寬度設置爲正確的大小,但它們沒有改變。

任何人都可以幫忙嗎?

編輯: 膨脹機被包含在一個網格中,兩列有一個網格分離器和另一個在第一列的膨脹器。另一個膨脹機做同樣的事情,但倒塌到左側 - 然而,這個膨脹機似乎正常工作。

+0

你可以在代碼中發佈一些關於如何將擴展器設置到容器(一個網格,也許我看到Grid.Column)的代碼。 – michele 2012-08-01 10:12:24

+0

添加了對該帖子的修改:) – jess 2012-08-01 10:26:07

+0

如果你將自己的擴展器放在頁面/窗口中,它的行爲如何? 'Grid'控件可能會擴展你的'Expander'以適應列的大小。 – 2012-08-01 11:08:30

回答

1

我認爲將'Horizo​​ntalAlignment'設置爲'Right'可能會修復您獲得的行爲,因爲網格中大多數控件的默認行爲將填充其單元格中的所有可用空間。除非它不是直接在網格中,或者Horizo​​ntalAlignment被設置爲Left,否則你的左邊的工作有點奇怪。

+0

更具說明性,謝謝這有助於!我認爲這是包括水平線的組合,並且我已經設置了lhs面板的MaxWidth,所以右邊的不能完全崩潰。 – jess 2012-08-02 09:57:01