Кто-нибудь знает, возможно ли различать высоту каждого элемента в 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.
Возможно ли, не имея фиксированной коллекции (скажем, случайной каждый раз), гарантировать, что мы все еще заполняем родительский контейнер и гарантируют, что типы данных 'Divider' будут иметь высоту только 1 пиксель, тогда как совы ascii получают равную долю остальных?
Или это невозможно?В каком случае мы смотрим на DataGrid, где каждый бит стиля настроен как полностью невидимый?