0

有谁知道是否可以根据相关项目的 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,其中每一位样式都设置为完全不可见?

4

0 回答 0