我有这些控件:
<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
可能包含任意数量的项目。我希望整个页面从上到下滚动,但它不会向下滚动。我怎样才能做到这一点?我知道问题是因为另一个可滚动控件内部的可滚动控件,但不知道如何解决它。
答案 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)
尝试为控件指定高度,尤其是StackPanel
和ListBox
,即使只是“自动”高度也可用于测试。此外,不是设置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"
更改此功能)