2012-01-27 2 views
0

Я начал разрабатывать свой код, используя пример из SO WPF: arranging collection items in a grid. Теперь, чтобы получить возможность выбора ячейки, я переименовал каждый ItemsControl к ListBox, потому что ListBox есть-ItemsControl (XAML несколько упрощенный):Масштабирование изображений в WPF ListBox

<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> 

Сетка заполняется тест глиф выполнения, изображаемый на основе по коду here.

Удивительно, но это сработало - вид. Отборные работы. Однако в случае с ItemsControl не было полосы прокрутки. Все красиво красиво. Когда я сделал окно меньше, ячейки сетки сократились, а также изображения. Когда я сделал окно больше, все увеличилось.

Теперь, с ListBox, это не тот случай. Размер изображения остается фиксированным. Если окно недостаточно велико, есть горизонтальная полоса прокрутки, и когда окно недостаточно велико, некоторые изображения скрыты, и пользователю нужно прокрутить вправо.

Итак, мой вопрос: Если ListBox - это ItemControl, почему мои изображения не будут одинаковыми? Что я должен сделать, чтобы исправить это?

ответ

1

Это потому, что ListBox и ItemsControl используют разные стили. Вы можете легко применить стиль по умолчанию элемента ItemControl к своему ListBox:

<ListBox Style="{StaticResource ResourceKey={x:Type ItemsControl}}"> 

 Смежные вопросы

  • Нет связанных вопросов^_^