В ItemsControl элементы находятся в ContentPresenter, поэтому, если элемент имеет Visibility = 'свернутый', его ContentPresenter все еще имеет Visibility = 'Visible' ... ( Здесь объясняется такое поведение)
Таким образом, эти 2 примера не показывают одинаковый результат:
Это работает, как я ожидаю:
<UniformGrid Columns="1">
<Button Content="0"/>
<Button Content="1"/>
<Button Content="2" Visibility="Collapsed"/>
<Button Content="3"/>
</UniformGrid>
Это не работает, как я ожидаю (UniformGrid резервирует место длятретья кнопка также, если она свернута):
<ItemsControl>
<ItemsControl.ItemsSource>
<x:Array Type="{x:Type System:Int32}">
<System:Int32>0</System:Int32>
<System:Int32>1</System:Int32>
<System:Int32>2</System:Int32>
<System:Int32>3</System:Int32>
</x:Array>
</ItemsControl.ItemsSource>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Visibility="{Binding ., Converter={StaticResource CalculatorConverter}, ConverterParameter=IIF(\{0\}\=2\,\'Collapsed\'\,\'Visible\')}" Content="{Binding .}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Кто-нибудь получил эту проблему?Есть ли обходной путь?