<WrapPanel
HorizontalAlignment="Center"
ScrollViewer.VerticalScrollBarVisibility="Disabled">
<GroupBox
Header="{DynamicResource ResourceKey=StampUserTab_Strings}"
BorderThickness="1.3"
Style="{StaticResource GroupBoxBorder}" >
<ListBox
Grid.Row="1"
Name="ComponentBox"
ItemTemplate="{DynamicResource StringTemplate}"
VerticalContentAlignment="Stretch"
ScrollViewer.CanContentScroll="True"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto"
VerticalAlignment="Stretch"
ItemsSource="{Binding ActiveSettings.Components}"
SelectionChanged="ComponentBox_SelectionChanged"
Style="{StaticResource ResourceKey=SettingsListBoxUser}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</GroupBox>
</WrapPanel>
这是我的代码。主要问题是,当我向列表框添加项目时,它会不断扩展到我的屏幕之外。我想将它绑定到屏幕,所以当它到达底部时,垂直滚动会出现并可用于滚动内容。
我试图将网格ro的高度设置为*,但它没有帮助。
有什么想法吗?
编辑: 问题是WrapPanel。我将其更改为Grid,定义了具有*高度和宽度的行和列。将我的元素添加到网格行和列后,列表框折叠后在展开后滚动。谢谢你的帮助。
答案 0 :(得分:1)
好像你可以阅读MSDN上的Panels Overview页面。不同的Panel
具有不同的行为,并且所有新的WPF开发人员都知道这些差异非常重要。例如,Grid
可以自动调整其内容(放置在其中的控件),而WrapPanel
则不会。
因此,当希望约束控件的尺寸时,您应该将它们放入Grid
或其中一个提供该功能的Panel
中,并避免使用那些别&#39;吨
你说:
我试图将网格行的高度设置为*,但它没有帮助
这是因为ListBox
中的Grid
不 ...其父WrapPanel
可能在Grid
中,您可以尝试在其上设置Grid.Row
。