堆栈面板内的ListBox不起作用

时间:2014-02-25 02:15:09

标签: c# xaml windows-phone-8 windows-phone

我有这些控件:

<StackPanel>
    <TextBlock Text="Bill Benson"/>
    <Image Source="/Assets/Images/BB.png"/>
    <ListBox>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text=""/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    <TextBlock Text="ends: 2015"/>
</StackPanel>

ListBox可能包含任意数量的项目。我希望整个页面从上到下滚动,但它不会向下滚动。我怎样才能做到这一点?我知道问题是因为另一个可滚动控件内部的可滚动控件,但不知道如何解决它。

3 个答案:

答案 0 :(得分:1)

您需要为列表框控件指定高度,因为它采用自动,这意味着高度根据其中的项目数继续增加,因此无法访问控件底部的项目,所以要么给它一个高度,要么代替stackpanel将它保存在带有行定义的网格中。

<StackPanel>
    <TextBlock Text="Bill Benson"/>
    <Image Source="/Assets/Images/BB.png"/>
    <ListBox Height="200">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text=""/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    <TextBlock Text="ends: 2015"/>
</StackPanel>

答案 1 :(得分:0)

尝试为控件指定高度,尤其是StackPanelListBox,即使只是“自动”高度也可用于测试。此外,不是设置ItemTemplate,如果您有一个要绑定ListBox的项目列表会更有用,请尝试一些硬编码值:

<ListBox>
    <TextBlock Text="1"/>
    <TextBlock Text="Test"/>
    <TextBlock Text="Another"/>
    <TextBlock Text="testing"/>
    <TextBlock Text="Sample"/>
</ListBox>

尝试添加超过ListBox可以显示的内容,并查看它是否滚动。

答案 2 :(得分:0)

改为尝试停靠面板:

<DockPanel>
    <StackPanel DockPanel.Dock="Top">
        <TextBlock Text="Bill Benson"/>
        <Image Source="/Assets/Images/BB.png"/>
    </StackPanel>
    <TextBlock DockPanel.Dock="Bottom" Text="ends: 2015"/>
    <ListBox>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text=""/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>    
</DockPanel>

ListBox将自动展开以填充空间。注意:它必须是DockPanel中的最后一个孩子。 (您可以使用LastChildFill="False"更改此功能)