我正在尝试在WPF应用程序视图之一的ItemsControl中设置一个列表。
问题是我希望项目的其他顺序显示在控件中。 主教,ItemsControl从左到右,从上到下显示项目:
1 2 3 4 5 6
7 8 9 10 11 12
但是,我想以其他方式显示我的商品-从右上方到左下方-
11 9 7 5 3 1
12 10 8 6 4 2
我当前的ItemsControl是:
Grid.Column="1"
BorderThickness="1"
BorderBrush="{DynamicResource WindowTitleColorBrush}">
<ItemsControl ItemsSource="{Binding Truck.Containers}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="2" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Border>
我不能只按降序重新排列列表,因为它将以12开头,以1而不是11-2结束。 还有其他方法可以按照我想要的顺序显示我的列表吗?
答案 0 :(得分:0)
我认为您可以采用以下三种解决方案之一:
在View模型中根据需要订购商品
使用CollectionViewSource
-在此处进行自定义订购
创建一个自定义Panel
,该订单可根据需要订购商品,并将其用作ItemsPanelTemplate
。要创建自定义面板,请创建一个自定义类,并继承自Panel
或UniformGrid
。比重写两种方法:
MeasureOverride-确定所需的面板尺寸 根据所需的子元素大小和可用 空间。
ArrangeOverride-将元素排在最后 可用空间。最终大小可以小于要求的大小。
答案 1 :(得分:0)
仅建议在代码中执行此操作:将列表拆分为偶数或奇数,通过降序对这两个列表进行排序,然后将前两个列表中的元素添加到绑定到ItemsControl的第三个列表中!