2010-06-07 3 views
2

Я только недавно начал разработку с помощью Visual Studio 2010 Express для Windows Phone, и я включил ListBox. Я не могу манипулировать форматированием. Независимо от того, что я делаю, фон черный/серый, выбранные элементы имеют синюю рамку, и между элементами в списке есть пробел (я использую изображения). Вот мой код:Windows Phone 7 ListBox невыполнима?

Xaml:

<Grid x:Name="ContentGrid" Grid.Row="1"> 
    <Grid Name="gallery"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="370" /> 
      <RowDefinition Height="150" /> 
     </Grid.RowDefinitions> 
     <Border BorderBrush="Red" Width="450" CornerRadius="4" BorderThickness="2" 
      Background="Red" Margin="10,30,20,10" Padding="6,6,6,6"> 
      <Image Grid.Row="0" Grid.Column="0" Height="360" x:Name="imgPreview"/> 
     </Border> 
     <ListBox x:Name="lbScrollGallery" Grid.Row="1" Grid.Column="0" Padding="0" 
       VerticalAlignment="Top" Width="450" SelectionChanged="ScrollerSelectionChanged" 
       d:LayoutOverrides="HorizontalAlignment" ScrollViewer.HorizontalScrollBarVisibility="Hidden"> 
      <ListBox.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Orientation="Horizontal"/> 
       </ItemsPanelTemplate> 
      </ListBox.ItemsPanel> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Image Width="100" Height="100" Stretch="Fill" Name="imgSource" 
         VerticalAlignment="Center" 
         Source="{Binding Path=Url}" /> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 
</Grid> 

Есть ли какой-то способ, которым я могу настроить ListBox? Как изменить фон на красный или сделать дополнение между различными элементами 0?

+0

Если вы сделаете так, как предложено, например, используя свой собственный стиль и т. Д., Вы сможете переопределить стиль по умолчанию в виде списка, как в Silverlight на рабочем столе, - помните, что некоторые из этих дополнений доступны для сенсорных целей, стоит помнить при создании пользовательских элементов управления , или настраивая существующие, но изображения будут достаточно большими объектами, которые я предполагаю. – RoguePlanetoid

ответ

7

Ниже приведена демонстрация xaml, показывающая настройку нескольких свойств отображения.

<ListBox Height="640" HorizontalAlignment="Left" Margin="6,6,0,0" Name="listBox1" VerticalAlignment="Top" Width="468"> 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="Padding" Value="-12" /> 
       <Setter Property="Background" Value="White"/> 
       <Setter Property="Foreground" Value="Black"/> 
      </Style> 

     </ListBox.ItemContainerStyle> 
    </ListBox> 

Обратите внимание, что встроенное форматирование применяет некоторое дополнение, которое можно обрабатывать со значением -12. Я также понимаю из сообщения Эрика Флека here, что это может быть результатом стилизации метро. Сообщение предлагает пример того, как обойти это форматирование все вместе с помощью кнопки управления. Это может быть подход, который стоит рассмотреть.

+0

Спасибо Деревья, что сработало. – EverTheLearner

+0

Обычно вам не рекомендуется «обходить» руководящие принципы стилей Metro, поскольку они помогают поддерживать согласованный UX в разных приложениях. Попадая в цель с какой-то дополнительной комнатой, действительно полезно для толстых пальцев, таких как мои ... –

1

Вы должны сначала посмотреть at this MSDN article о шаблонах и стилях в Silverlight (и WPF). Каждый элемент управления настраивается, просто укажите свои Template и ItemsContainerStyle здесь.

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