【问题标题】:WPF: How to make a Expander overflow and fill windowWPF:如何使扩展器溢出和填充窗口
【发布时间】:2011-03-16 10:12:50
【问题描述】:

我正在尝试创建一个扩展器,它有一个切换按钮/标题作为左侧的细长条,但是当展开时会填充窗口的其余部分,甚至是已经存在的材料。

我不太确定最好的方法是什么。我可能想到了一个有 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

有什么想法吗?

【问题讨论】:

    标签: wpf expander


    【解决方案1】:

    听起来您想做类似于Karl Shifflett's example here 的事情。在这种情况下,他只是修改了内容控件的 z-index 并手动设置了行高以产生弹出窗口的错觉,因此您需要确保您没有尝试类似地 ZIndex 其他视觉元素。

    您需要确保在您的Expander 上设置ColumnSpanRowSpan,以便在扩展时覆盖这些行的内容。

    【讨论】:

    • 感谢您指出这一点,但我认为我只会将此作为最后的手段,感觉就像是一种黑客行为,我担心这可能会很容易破坏。
    • 您可以做的另一件事是切换到由 ToggleButton 和 Popup 控件组成的人造扩展器自定义控件。这样,弹出窗口将保证显示在那里出现的任何内容。不过,您只需要自己创建控件。
    • 我会检查的。而且我还尝试了其他解决方案,它可能没问题,除了我担心主窗口的大小和调整大小。我想我可以把它绑定在一起来解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多