扩展器标头的旋转文本宽度不正确

时间:2012-08-01 10:03:32

标签: c# wpf xaml

我有一个(右向)扩展器,它应该在展开时隐藏标题,并在折叠时显示一些旋转到右下方垂直的文本。 我已设法使用以下代码实现此目的:

<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的宽度设置为正确的大小,但它们没有更改。

有人可以帮忙吗?

编辑: 扩展器包含在一个网格中,其中两列带有网格分割器,第一列中有另一个扩展器。另一个扩展器做同样的事情但是向左侧坍塌 - 然而这个扩展器似乎正常工作。

1 个答案:

答案 0 :(得分:1)

我认为将“Horizo​​ntalAlignment”设置为“Right”可能会修复您获得的行为,因为网格中大多数控件的默认行为是填充其单元格中的所有可用空间。你的左边工作有点奇怪,除非它不直接在网格中,或者Horizo​​ntalAlignment设置为Left?