Изображения в горизонтальной панели стека отображаются вертикально - PullRequest
1 голос
/ 03 июля 2010

Я создаю макет в Silverlight 4 и пытаюсь отобразить некоторые миниатюрные изображения горизонтально с горизонтальной полосой прокрутки.Для этого я попытался использовать StackPanel с горизонтальной ориентацией, но полученные изображения всегда отображаются вертикально.

<ScrollViewer Height="140" VerticalAlignment="Top" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto">
    <StackPanel Height="140" Orientation="Horizontal">
        <ListBox Height="140" ItemsSource="{Binding SelectedUser.ProfileImages}" />
    </StackPanel>
</ScrollViewer>

ItemsSource представляет собой список System.Windows.Controls.Image.Чтобы проверить, я заполняю его четырьмя миниатюрами и устанавливаю размер для каждого из них 120x160.

BitmapImage bmpImage1 = new BitmapImage { UriSource = new Uri("Style/Images/thumbnail1.jpg", UriKind.Relative) };
Image image1 = new Image { Source = bmpImage1, Height = 120, Width = 160 };

Получившийся объект страницы в конечном итоге выглядит как изображение, приведенное ниже.Высота 140, ширина 160, но изображения располагаются вертикально, а не горизонтально.Любые идеи, как заставить эти изображения отображать горизонтально, а не вертикально?

http://img824.imageshack.us/img824/8211/stackpanel.png

1 Ответ

1 голос
/ 06 июля 2010

Вместо того, чтобы пытаться управлять ScrollViewer самостоятельно (что уже делает ListBox), вам просто нужно заменить панель ItemsPanel по умолчанию на Horizontal StackPanel.Как это: -

<ListBox Height="140" ItemsSource="{Binding SelectedUser.ProfileImages}">
  <ListBox.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal" />
    </ItemsPanelTemplate>
  </ListBox.ItemsPanel>
</ListBox> 
...