Xaml 列表框所选项目背景色

Xaml 列表框所选项目背景色,xaml,windows-store-apps,Xaml,Windows Store Apps,尝试从列表框中创建选项卡控件。如果listboxitems只是文本,那么很容易看到选择了哪个选项卡,但只要我添加一个图像/路径作为listboxitem的内容,单击时它就不再显示为选中。下面唯一显示选中时的项目是“Hello World”项目。我只希望选项卡的背景在被选中时改变颜色 <ListBox> <ListBox.ItemsPanel> <ItemsPanelTemplate> <Stack

尝试从列表框中创建选项卡控件。如果listboxitems只是文本,那么很容易看到选择了哪个选项卡,但只要我添加一个图像/路径作为listboxitem的内容,单击时它就不再显示为选中。下面唯一显示选中时的项目是“Hello World”项目。我只希望选项卡的背景在被选中时改变颜色

<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>


我最近刚刚用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>

导致该问题的原因是每次更改选项卡时所选索引都会丢失。我通过在视图模型中绑定所选索引修复了这个问题。listbox也可以正常工作。我仍然会将此标记为答案,因为我对所选背景有问题。