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 我发现扩展器的标题、边框和停靠面板太大,但内部切换按钮的大小正确。我尝试将标题、边框和停靠面板的宽度设置为正确的大小,但它们没有改变。

任何人都可以帮忙吗?

编辑:扩展器包含在一个网格中,该网格有两列,一个网格拆分器,另一个扩展器位于第一列。另一个扩展器做同样的事情,但折叠到左侧 - 然而,这个扩展器似乎工作正常。

4

1 回答 1

1

我相信将“Horizo​​ntalAlignment”设置为“Right”可能会解决您遇到的问题,因为网格中大多数控件的默认行为将是填充其单元格中的所有可用空间。不过,您的左侧工作有点奇怪,除非它不是直接在网格中,或者将 Horizo​​ntalAlignment 设置为 Left?

于 2012-08-01T22:50:21.843 回答