2015-05-11 4 views
0

Попытка сделать управление вкладкой из списка. Если listboxitems - это просто текст, то легко увидеть, какая вкладка выбрана, но как только я добавляю образ/путь в качестве содержимого списка, он больше не показывает его как выбранный при нажатии. Единственный элемент ниже, который показывает, когда он выбран, - это элемент «Hello World». Я просто хочу, чтобы фон вкладки менял цвет, когда он выбран.ListBox выделенный элемент цвет фона

<ListBox> 
<ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     <ListBoxItem> 
      <Canvas Width="53.3333" Height="53.3333"> 
       <Path Width="4.22434" Height="4.224" Stretch="Fill" Fill="#FF000000" Data="..."/>    
      </Canvas> 
     </ListBoxItem> 
     <ListBoxItem> 
      <ListBoxItem.Content> 
       <Canvas Width="46.6667" Height="45.3333"> 
        <Path Width="46.3232" Height="43.9357" 
          Canvas.Left="0.51729" 
          Canvas.Top="1.06295" 
          Stretch="Fill" 
          Fill="#FF000000" 
          Data="..." 
       </Canvas> 
      </ListBoxItem.Content> 
     </ListBoxItem> 
     <ListBoxItem Content="Hello World"> 
     </ListBoxItem> 
    </ListBox> 

ответ

2

Я только что сделал это недавно для одного из своих приложений, используя ListView. Он должен быть похож на ListBox, но вы можете использовать ListView, поскольку они похожи, и я знаю, что он работает. Вам нужно изменить стиль, чтобы установить цвета SelectedBackground и SelectedPointerOverBackground. Я установил их в синий цвет в стиле ниже.

 <Style x:Key="ListViewItemTabStyle" TargetType="ListViewItem"> 
      <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" /> 
      <Setter Property="FontSize" Value="30" /> 
      <Setter Property="Background" Value="Transparent"/> 
      <Setter Property="TabNavigation" Value="Local"/> 
      <Setter Property="IsHoldingEnabled" Value="True"/> 
      <Setter Property="Margin" Value="0,0,0,0"/> 
      <Setter Property="HorizontalContentAlignment" Value="Left"/> 
      <Setter Property="VerticalContentAlignment" Value="Center"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ListViewItem"> 
        <ListViewItemPresenter 
        ContentTransitions="{TemplateBinding ContentTransitions}" 
        Padding="{TemplateBinding Padding}" 
        SelectionCheckMarkVisualEnabled="False" 
        CheckHintBrush="{ThemeResource ListViewItemCheckHintThemeBrush}" 
        CheckSelectingBrush="{ThemeResource ListViewItemCheckSelectingThemeBrush}" 
        CheckBrush="{ThemeResource ListViewItemCheckThemeBrush}" 
        DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}" 
        DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}" 
        FocusBorderBrush="{ThemeResource ListViewItemFocusBorderThemeBrush}" 
        PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}" 
        PointerOverBackground="{ThemeResource ListViewItemPointerOverBackgroundThemeBrush}" 
        SelectedBorderThickness="{ThemeResource ListViewItemCompactSelectedBorderThemeThickness}" 
        SelectedBackground="Blue" 
        SelectedForeground="{ThemeResource ListViewItemSelectedForegroundThemeBrush}" 
        SelectedPointerOverBackground="Blue" 
        SelectedPointerOverBorderBrush="{ThemeResource ListViewItemSelectedPointerOverBorderThemeBrush}" 
        DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}" 
        DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}" 
        ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}" 
        HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
        VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" 
        PointerOverBackgroundMargin="1" 
        ContentMargin="4" /> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

А затем установить стиль для ListView, как это:

<ListView ItemContainerStyle="{StaticResource ResourceKey=ListViewItemTabStyle}" Background="Gray" SelectedIndex="0"> 
    <ListViewItem Content="Item1"/> 
    <ListViewItem Content="Item2"/> 
    <ListViewItem Content="Item3"/> 
</ListView> 
+0

Проблема была вызвана тем, что выбранный индекс теряться каждый раз, когда закладка была изменена. Я исправил это, связав выбранный индекс в модели представления. listbox отлично работает. Я по-прежнему буду отмечать это как ответ, хотя у меня возникли проблемы с выбранным фоном. –

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