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 を使用すると、エキスパンダーのヘッダー、境界線、ドックパネルが大きすぎることがわかりましたが、内側のトグル ボタンは正しいサイズでした。ヘッダー、ボーダー、ドックパネルの幅を正しいサイズに設定しようとしましたが、変更されませんでした。

誰でも助けることができますか?

編集:エキスパンダーは、グリッドスプリッターと最初の列に別のエキスパンダーを持つ2つの列を持つグリッドに含まれています。もう一方のエキスパンダーも同じことを行いますが、左側に折りたたまれますが、このエキスパンダーは正しく機能しているようです。

4

1 に答える 1

1

'Horizo​​ntalAlignment' を 'Right' に設定すると、グリッド内のほとんどのコントロールのデフォルトの動作がセル内のすべての利用可能なスペースを埋めることになるため、取得している動作が修正される可能性があると思います。ただし、グリッド内に直接ない場合、または Horizo​​ntalAlignment が Left に設定されている場合を除き、左のものが機能するのはちょっと奇妙ですか?

于 2012-08-01T22:50:21.843 に答える