我正在制作一个简单的LOB应用程序,它从XML文件中加载数据,并在列表中显示它,同时还有一些用于编辑的按钮。
在我的第一次尝试中,除了列表向下滚动成为一列之外,其他都很好。我希望数据可以换行,这样在窗口底部就会开始第二列,以此类推 - 如果调整窗口大小,则数据应相应地调整大小。
首先,我只是将ListBox放在ScrollViewer内。但是这没有任何变化。
然后,我在ItemTemplate中添加了WrapPanel。此时,我得到了一个水平的长行,但它从未换行到第二行,尽管我设置了ScrollViewer.HorizontalScrollbar=disabled。
我已经在各种博客和论坛上搜索过,但看不出建议和我的代码(如下所示)之间的区别。任何提示都将不胜感激。
在我的第一次尝试中,除了列表向下滚动成为一列之外,其他都很好。我希望数据可以换行,这样在窗口底部就会开始第二列,以此类推 - 如果调整窗口大小,则数据应相应地调整大小。
首先,我只是将ListBox放在ScrollViewer内。但是这没有任何变化。
然后,我在ItemTemplate中添加了WrapPanel。此时,我得到了一个水平的长行,但它从未换行到第二行,尽管我设置了ScrollViewer.HorizontalScrollbar=disabled。
我已经在各种博客和论坛上搜索过,但看不出建议和我的代码(如下所示)之间的区别。任何提示都将不胜感激。
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="My App" Height="300" Width="400"
FocusManager.FocusedElement="{Binding ElementName=eventsList}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Row="0" Grid.Column="0" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<ListBox Name="eventsList">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</ScrollViewer>
<StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Center" Visibility="Collapsed">
<Button Name="action1Button" />
<Button Name="action2Button" />
<Button Name="action3Button" />
</StackPanel>
</Grid>
</Window>