упорядочить изображения переменного размера в списке в Windows phone

#image #windows-phone-8 #listbox #wrappanel

#изображение #windows-phone-8 #список #wrappanel

Вопрос:

я использовал wrappanel для упорядочивания изображений в списке, но в моей коллекции изображений некоторые изображения имеют разные размеры. Некоторые из них горизонтальные, а некоторые вертикальные. Из-за разной ориентации между изображениями есть некоторые пробелы, что не очень хорошо видно. Может ли какой-нибудь орган предложить мне какой-либо способ удалить эти пробелы?

Спасибо

введите описание изображения здесь

я использую следующий код, но проблема все та же…

 <ListBox Name="lstBoxMyRecentPhotos"
                                         MaxHeight="650"
                                         Margin="0,8,0,0"
                                         SelectionChanged="lstImageList_SelectionChanged">
                                    <ListBox.ItemsPanel>
                                        <ItemsPanelTemplate>
                                            <toolkit1:VariableSizedWrapGrid ItemHeight="200" ItemWidth="230" />
                                        </ItemsPanelTemplate>
                                    </ListBox.ItemsPanel>

                                    <ListBox.ItemTemplate>
                                        <DataTemplate>

                                            <Border Name="brdr"
                                                    Margin="5"
                                                    BorderBrush="White"
                                                    BorderThickness="3">
                                                <Border.Background>
                                                    <ImageBrush ImageSource="Images/capsule_image_holder.png" Stretch="Uniform" />
                                                </Border.Background>
                                                <Image Width="{Binding width}"
                                                       Height="{Binding height}"
                                                       Hold="imgRecent_Hold"
                                                       Source="{Binding photoUrl}"
                                                       Stretch="UniformToFill">

                                                </Image>
                                            </Border>

                                        </DataTemplate>
                                    </ListBox.ItemTemplate>

                                </ListBox>
 

Ответ №1:

Два способа

  1. Сделайте так, чтобы изображение всегда растягивалось UniformToFill и использовало жестко заданный размер — таким образом, оно будет равномерно заполнять отведенное ему пространство, и все фотографии будут хорошо использовать данное пространство
  2. Используйте VariableSizedWrapGrid.

Предоставляет панель макета в стиле сетки, где каждая плитка / ячейка может иметь переменный размер в зависимости от содержимого. Аналогично WinRT VariableSizedWrapGrid.

Комментарии:

1. я пробовал с помощью VariableSizedWrapGrid, но в VariableSizedWrapGrid мы должны заранее определить высоту и ширину, чтобы я получал изображение того же размера

Ответ №2:

Я не знаю, какой инструментарий вы используете для VariableSizedWrapGrid, но вы уверены, что вам нужно установить его ItemHeight? Что произойдет, если вы этого не сделаете?

Я лично использую элементы управления Telerik, чтобы создать сетку-оболочку. Если у вас есть доступ к их элементам управления, я могу поделиться примером.

Вот как выглядит моя реализация:

Комментарии:

1. когда я не указываю ItemHeight, он запускает и необработанное исключение.. мы должны купить подписку на управление Telerik и, будучи новым разработчиком, я думаю, что не могу себе этого позволить … так что можете ли вы предоставить мне какие-либо альтернативы. Любой образец был бы более полезным.