WPF - ListBox离开了屏幕

时间:2014-08-21 14:41:50

标签: c# .net wpf listbox screen

<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,定义了具有*高度和宽度的行和列。将我的元素添加到网格行和列后,列表框折叠后在展开后滚动。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

好像你可以阅读MSDN上的Panels Overview页面。不同的Panel具有不同的行为,并且所有新的WPF开发人员都知道这些差异非常重要。例如,Grid可以自动调整其内容(放置在其中的控件),而WrapPanel则不会。

因此,当希望约束控件的尺寸时,您应该将它们放入Grid或其中一个提供该功能的Panel中,并避免使用那些别&#39;吨

你说:

  

我试图将网格行的高度设置为*,但它没有帮助

这是因为ListBox中的Grid ...其父WrapPanel 可能Grid中,您可以尝试在其上设置Grid.Row