【问题标题】:WPF - Scrolling Listbox in an ExpanderWPF - 扩展器中的滚动列表框
【发布时间】:2009-11-02 15:36:19
【问题描述】:

我有一个Expander,我想在其中有一个ListBox。当我打开Expander 时,ListBox 只是在屏幕外展开(而不是展开以填充可用的内容然后滚动)。

这是我的 XAML:

<DockPanel Margin="266.25,0,455,12" Name="dockPanel1">
    <StackPanel>
        <Expander Header="expander1" Name="expander1" Width="150" HorizontalAlignment="Left">
            <Grid>
                <Label>Testing</Label>
                <ScrollViewer>
                    <ListBox Name="lstBox"  FontSize="14" SelectionChanged="lstBox_SelectionChanged" />
                </ScrollViewer>
            </Grid>
        </Expander>
        <Expander Header="expander2" Name="expander2" Width="150" HorizontalAlignment="Left">
            <Grid >

            </Grid>
        </Expander>
    </StackPanel>
</DockPanel>

当Expander1 打开时,它只会扩展到ListBox 的大小(屏幕外)。如果我在网格上放置一个大小 (Height="275"),那么它不会随窗口调整大小。

我希望它拉伸到窗口的大小,但不会更多。有没有办法做到这一点?

【问题讨论】:

    标签: c# wpf xaml listbox expander


    【解决方案1】:

    您需要设置 ScrollViewer 的 Height 属性,否则它将与它的子级大小相同。这是一些更新的 XAML:

    <DockPanel>
        <StackPanel>
            <Expander Header="expander1" Width="150" HorizontalAlignment="Left">
                <StackPanel>
                    <Label>Testing</Label>
                    <ScrollViewer Height="75">
                        <ListBox>
    
                        </ListBox>
                    </ScrollViewer>
                </StackPanel>
            </Expander>
            <Expander Header="expander2">
            </Expander>
        </StackPanel>
    </DockPanel>
    

    【讨论】:

    • 但是如何将其设置为窗口的高度?我可以通过数据绑定来实现吗?
    • 您可以使用如下语法进行绑定:{Binding ElementName=Window1, Path=Height} 但这会导致值过大。我认为相反,您将需要一个属性到您的窗口,即 Height - SomeOffset。
    • 另外,我想还有比我刚才建议的更好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    相关资源
    最近更新 更多