WPF: как сделать переполнение экспандера и заполнить окно - PullRequest
1 голос
/ 15 июля 2010

Я пытаюсь создать расширитель с переключателем / заголовком в виде тонкой полосы слева, но при расширении он заполняет остальную часть окна, даже материал, который уже есть.

I 'Я не совсем уверен, что лучший способ сделать это.Возможно, я подумал о сетке с 2 столбцами.Первый будет иметь расширитель, второй другой материал.Затем у меня будет триггер, который установит ширину второго столбца в ноль, когда Expander IsExpanded.

Я не совсем уверен, как заставить это работать или даже как сделать это правильно.

Вот пример кода:

<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

Есть идеи?

1 Ответ

1 голос
/ 15 июля 2010

Похоже, вы хотите сделать что-то похожее на пример Карла Шиффлетта здесь . В этом случае он просто изменяет z-индекс элемента управления содержимым и устанавливает высоту строки вручную, чтобы создать иллюзию всплывающего окна, поэтому вам нужно убедиться, что вы не пытаетесь ZIndex подобным образом использовать другие визуальные элементы.

Вам нужно убедиться, что вы устанавливаете ColumnSpan и RowSpan на свой Expander, чтобы при его расширении охватывать содержимое этих строк.

...