В настоящее время у меня есть ListBox, который обернут горизонтально, но я хотел бы переключить его на LongListSelector. Причина этого, помимо того, что он может быть заполнен большим количеством элементов, заключается в том, что при использовании ListBox нет согласованности с тем, как элементы упакованы. Я хотел бы видеть столбцы из трех, сколько строк требуется, когда элементы отображаются в представлении, но с ListBox это может быть либо два, либо три, в зависимости от ширины элемента. Элемент содержит как изображение, так и текст под ним, а текст (когда он шире изображения) приводит к тому, что элементы в списке переносятся неравномерно.
То, что у меня есть в настоящее время,
<ListBox Name="ListBoxEffects" SelectionMode="Single" ItemsSource="{Binding}" Margin="{Binding}"
toolkit:TiltEffect.IsTiltEnabled="True" SelectionChanged="ListBox_SelectionChanged" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel ItemWidth="Auto" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Margin="12,0,0,24" >
<Image Source="{Binding Thumbnail}" Width="128" Height="128" />
<TextBlock Text="{Binding Name}" TextWrapping="Wrap" FontSize="{StaticResource PhoneFontSizeNormal}" VerticalAlignment="Center" HorizontalAlignment="Center" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
И то, что я пытался сделать, это
<phone:LongListSelector Name="ListBoxEffects" Margin="{Binding}"
toolkit:TiltEffect.IsTiltEnabled="True"
LayoutMode="Grid" GridCellSize="128,128"
SelectionChanged="ListBox_SelectionChanged" >
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Margin="12,0,0,24" >
<Image Source="{Binding Thumbnail}" Width="128" Height="128" />
<TextBlock Text="{Binding Name}" TextWrapping="Wrap" FontSize="{StaticResource PhoneFontSizeNormal}" VerticalAlignment="Center" HorizontalAlignment="Center" />
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
Я мог бы просто изменить <toolkit:WrapPanel ItemWidth="Auto" />
в оригинале на указанную ширину, но я считаю, что в долгосрочной перспективе, когда несколько элементов добавляются динамически, LongListSelector будет гораздо лучшим вариантом. На данный момент ошибок нет, но в представлении ничего не отображается.