2

я хочу установить SelectItem переднего плана с цветом различий в LongListSelector Это моя XAML:Как установить SelectItem переднего плана в LongListSelector

<toolkit:LongListSelector x:Name="locations" Background="Transparent" Margin="0" 
        GroupViewOpened="LongListSelector_GroupViewOpened" 
        GroupViewClosing="LongListSelector_GroupViewClosing" 
        SelectionChanged="locations_SelectionChanged"> 
       <toolkit:LongListSelector.GroupItemsPanel> 
        <ItemsPanelTemplate> 
         <toolkit:WrapPanel Orientation="Horizontal"/> 
        </ItemsPanelTemplate> 
       </toolkit:LongListSelector.GroupItemsPanel> 
       <toolkit:LongListSelector.GroupItemTemplate> 
        <DataTemplate> 
         <Border Background="{Binding Converter={StaticResource GroupBackground}}" 
            Width="99" Height="99" Margin="6" IsHitTestVisible="{Binding HasItems}"> 
          <TextBlock Text="{Binding Key}" 
            FontFamily="{StaticResource PhoneFontFamilySemiBold}" 
            FontSize="48" 
            Margin="8,0,0,0" 
            Foreground="{Binding Converter={StaticResource GroupForeground}}"           
            VerticalAlignment="Bottom"/> 
          <Border.Projection> 
           <PlaneProjection RotationX="-60"/> 
          </Border.Projection> 
         </Border> 
        </DataTemplate> 
       </toolkit:LongListSelector.GroupItemTemplate> 
       <toolkit:LongListSelector.GroupHeaderTemplate> 
        <DataTemplate> 
         <Border Background="Transparent" Margin="12,8,0,8"> 
          <Border Background="{StaticResource HighlightBrush}"  
             Padding="8,0,0,0" Width="62" Height="62"     
             HorizontalAlignment="Left"> 
           <TextBlock Text="{Binding Key}" 
             Foreground="#FFFFFF" 
             FontSize="48" 
             FontFamily="{StaticResource PhoneFontFamilySemiLight}" 
             HorizontalAlignment="Left" 
             VerticalAlignment="Bottom"/> 
          </Border> 
         </Border> 
        </DataTemplate> 
       </toolkit:LongListSelector.GroupHeaderTemplate> 
       <toolkit:LongListSelector.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Margin="20,0"> 
          <TextBlock Text="{Binding n}" Style="{StaticResource PhoneTextExtraLargeStyle}" 
             FontFamily="{StaticResource PhoneFontFamilySemiBold}" 
             Margin="12,5"/> 
         </StackPanel> 
        </DataTemplate> 
       </toolkit:LongListSelector.ItemTemplate> 
      </toolkit:LongListSelector> 

LongListSelector без «ItemContainerStyle», я не знаю, как задайте ресурсы стиля, например обычный listboxitem.

ответ

1

При редактировании ItemTemplate использовать ContentControl вместо TextBlock, выбранный элемент будет использовать телефоны акцент кисти (убедитесь, что вы не ставим цвет переднего плана для управления содержимым):

<toolkit:LongListSelector.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Margin="20,0"> 
      <ContentControl Text="{Binding n}" Style="{StaticResource PhoneTextExtraLargeStyle}" 
          FontFamily="{StaticResource PhoneFontFamilySemiBold}" 
          Margin="12,5"/> 
     </StackPanel> 
    </DataTemplate> 
</toolkit:LongListSelector.ItemTemplate> 

Чтобы настроить его на собственный цвет, я закончил переопределять конструктор для TemplatedListBoxItem и установил DefaultStyleKey: DefaultStyleKey = typeof(TemplatedListBoxItem); Затем я настроил стиль для TemplatedListBoxItem, который соответствует стилю ListBoxItem в System.Windows.xaml, за исключением другого выбранного цвет визуального состояния элемента.

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