Я начал разрабатывать свой код на примере SO WPF: размещение элементов коллекции в сетке . Теперь, чтобы получить возможность выбора ячеек, я переименовал каждый ItemsControl в ListBox, потому что ListBox - это -A ItemsControl (XAMl несколько упрощенный):
<ListBox HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ItemsSource="{Binding YourItems}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style>
<Setter Property="Grid.Column" Value="{Binding X}"/>
<Setter Property="Grid.Row" Value="{Binding Y}"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Image RenderOptions.BitmapScalingMode="LowQuality" Source="{Binding ...ImageSource, Mode=OneWay}">
</Image>
</DataTemplate>
</ListBox.ItemTemplate>
Сетка заполнена тестовой картиной глифа, основанной на коде здесь .
Удивительно, но это сработало. Подбор работ. Однако в случае ItemsControl полоса прокрутки отсутствовала. Все хорошо масштабируется. Когда я уменьшил размер окна, ячейки сетки сократились, как и изображения. Когда я увеличил окно, все увеличилось.
Теперь с ListBox это не так. Размер изображения остается неизменным. Если окно недостаточно велико, имеется горизонтальная полоса прокрутки, а когда окно недостаточно велико, некоторые изображения скрыты, и пользователь должен прокрутить вправо.
Итак, мой вопрос: Если ListBox - это ItemControl, почему мои изображения не масштабируются одинаково? Что я должен сделать, чтобы исправить это?