Wpf 具有行中对象限制的项目框(Windows资源管理器中的大图标视图样式)
Wpf 具有行中对象限制的项目框(Windows资源管理器中的大图标视图样式),wpf,xaml,Wpf,Xaml,找不到解决非常简单的UI问题的解决方案: 我有一个带有图像属性的模型。Images属性保存图像项的集合。 现在-我有一个ListBox,并将ListBoxItem数据模板绑定到Images.Image,一切都很好。但我有一个新的行每一项。不太好。 我愿意实现的是,让我们描述为,一个列表框,具有水平项目方向和一行中项目的限制。就像Windows资源管理器中的大图标视图样式一样。 以前有人实施过这样的解决方案吗?如有任何建议,我们将不胜感激。 提前感谢。使用包装面板(或其他适当的面板)作为列表框的项
找不到解决非常简单的UI问题的解决方案:
我有一个带有图像属性的模型。Images属性保存图像项的集合。
现在-我有一个ListBox,并将ListBoxItem数据模板绑定到Images.Image,一切都很好。但我有一个新的行每一项。不太好。
我愿意实现的是,让我们描述为,一个列表框,具有水平项目方向和一行中项目的限制。就像Windows资源管理器中的大图标视图样式一样。
以前有人实施过这样的解决方案吗?如有任何建议,我们将不胜感激。
提前感谢。使用
包装面板(或其他适当的面板)作为列表框的项目面板,并禁用水平滚动:
<ListBox ItemsSource="{Binding Images}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Image Source="{Binding}" Width="100" Margin="5"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
使用WrapPanel
(或其他适当的面板)作为列表框的ItemsPanel
,并禁用水平滚动:
<ListBox ItemsSource="{Binding Images}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Image Source="{Binding}" Width="100" Margin="5"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
你可以将列表框的项目面板模板设置为包装面板,比如。你可以将列表框的项目面板模板设置为包装面板,比如。我不确定为什么总是这样-但我一问,我找到了使用ListView的替代解决方案:
<ListView ItemsSource="{Binding Images}">
<ListView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Image}" />
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="2" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
我不知道为什么总是这样-但我一问,就找到了一个使用ListView的替代解决方案:
<ListView ItemsSource="{Binding Images}">
<ListView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Image}" />
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="2" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
这与列表框的工作原理完全相同。你不必因为使用不同的面板而禁用水平滚动。同意,但我发布了另一种解决方案,因为它们适合不同的情况。使用包装器-项目将移动到下一行,这取决于是否有“最后一项”的位置(如果我错了,请纠正我)。在我的方法中,我使用UniformGrid设置-我希望在一行上看到多少项。当然,这就是为什么可以在ItemsControl中设置ItemsPanel的原因。这正是我在回答“WrapPanel(或其他合适的小组)”时所指的。都是真的-谢谢你的解释和帮助。干杯。这与列表框的工作原理完全相同。你不必因为使用不同的面板而禁用水平滚动。同意,但我发布了另一种解决方案,因为它们适合不同的情况。使用包装器-项目将移动到下一行,这取决于是否有“最后一项”的位置(如果我错了,请纠正我)。在我的方法中,我使用UniformGrid设置-我希望在一行上看到多少项。当然,这就是为什么可以在ItemsControl中设置ItemsPanel的原因。这正是我在回答“WrapPanel(或其他合适的小组)”时所指的。都是真的-谢谢你的解释和帮助。干杯