我有一个带有datatemplate的列表项,它在stackpanel中都有几个组件。现在我想在列表中的项目数之间平均分割列表行的大小(取决于行数),因此如果列表中只有2个项目,则列表项目中每个项目的高度将为2 (800/2),如果3(800/3)等(存在行大小保持不变的限制)
我的问题是如何将这个计算出的高度绑定到listitem的容器(stackpanel)?既然我已经设置了listitems itemsource属性,并且'container'在列表中?
答案 0 :(得分:0)
我要解决此问题的方法是创建一个ValueConverter
来查看List<T>
中的项目数量,然后计算个别StackPanel
元素的高度是。然后它会将此值作为int
返回。
要将各个部分组合在一起,您可以将StackPanel.Height
属性绑定到Count
上的List<T>
属性,并将ValueConverter
指定为属性的转换器。
当您尝试访问DataContext
属性时,Count
可能会有点棘手,因为StackPanel
会将DataContext
设置为单个列表项。但是,您可以通过向列表中的每个项目添加Count
属性来解决此问题。
这是一篇关于ValueConverter
的好文章(http://www.jeff.wilcox.name/2008/07/visibility-type-converter/)。它涵盖了将bool
转换为Visibility
属性,但概念是相同的。