有谁知道是否可以根据相关项目的 DataType 来改变 ItemsControl 中每个项目的高度?
假设我有一个 ObservableCollection 对象,大致如下:
SomeItemToDraw
SomeItemToDraw
SomeItemToDraw
Divider
SomeItemToDraw
SomeItemToDraw
Divider
SomeItemToDraw
我已将其绑定到 ItemsControl,每种类型都有不同的数据模板:
<ItemsControl ItemsSource="{Binding Myitems}" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="1" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type example:SomeItemToDraw>
<!-- A big ascii owl -->
</DataTemplate>
<DataTemplate DataType="{x:Type example:Divider>
<!-- A single line -->
</DataTemplate>
</ItemsControl.Resources>
显然,在上面,每个项目都被赋予了相等的空间。因此,单行的空间与巨大的 ascii owl 相同。
是否有可能在没有固定集合(比如每次都是随机的)的情况下确保我们仍然填充父容器并确保“分隔符”数据类型仅获得 1px 高度,而 ascii owls 获得相等的份额各自休息?
或者这是不可能的?在哪种情况下,我们正在查看一个 DataGrid,其中每一位样式都设置为完全不可见?