1

左にスリムなバーとしてトグルボタン/ヘッダーを持つエキスパンダーを作成しようとしていますが、展開すると、ウィンドウの残りの部分が塗りつぶされ、既に存在する素材も塗りつぶされます。

それを行う最善の方法が何であるかはよくわかりません。おそらく2列のグリッドを考えました。最初にエキスパンダーがあり、2 番目に他の素材があります。次に、Expander IsExpanded のときに 2 番目の列幅をゼロに設定するトリガーを用意します。

それを機能させる方法や、適切に行う方法さえよくわかりません。

コード例を次に示します。

<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Name="SecondColumn" Width="*" />
        </Grid.ColumnDefinitions>


        <Expander ExpandDirection="Right" IsExpanded="True">

            <Expander.Resources>
                <Style TargetType="Expander">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="Expander" >

                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsExpanded" Value="True" >
                                        <Setter TargetName="SecondColumn" Property="ColumnDefinition.Width" Value="0" />
                                    </Trigger>
                                </ControlTemplate.Triggers>

                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Expander.Resources>

            <ListBox >
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <UniformGrid />
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
            </ListBox>
        </Expander>

        <TabControl Grid.Column="1" />

    </Grid>

展開したときにリストボックスが表示されないようにします。それ以外の場合は、TabControl

何か案は?

4

1 に答える 1

1

Karl Shifflett の例 hereと同様のことをしたいようです。この場合、彼はコンテンツ コントロールの z-index を変更し、行の高さを手動で設定してポップアップの錯覚を与えているだけなので、ZIndex他の視覚要素を同様にしようとしていないことを確認する必要があります。

ColumnSpan設定しRowSpanていることを確認しExpanderて、展開したときにそれらの行の内容がカバーされるようにする必要があります。

于 2010-07-15T14:31:30.890 に答える