如何在UWP的ListView中更改默认选择的聚焦背景颜色?

时间:2016-07-01 11:30:49

标签: windows xaml win-universal-app uwp

我正在使用Windows通用应用。我想更改列表视图选择的背景颜色。系统默认选择的背景颜色为蓝色,我需要灰色。我使用数据模板将数据绑定到listview。

代码

的DataTemplate

<Page.Resources>
<DataTemplate x:Name="datatemplate1" x:DataType="data:storedata">
            <Grid>
                <Grid.RowDefinitions>

                    <RowDefinition Height="*"/>

                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="Auto"/>
                    <
                </Grid.ColumnDefinitions>


                <TextBlock Grid.Column="0"
                           Text="{x:Bind name}" 
                           x:Phase="1"  
                           x:Name="product_name_layout"
                           Style="{ThemeResource BaseTextBlockStyle}"
                           TextWrapping="NoWrap" 
                            Foreground="#FF080808"                                                 
                           Margin="2,3,0,0"
                           FontSize="12"
                           />
                <TextBlock x:Name="status_title_layout"    FontSize="12" Foreground="Gray"   Style="{ThemeResource BaseTextBlockStyle}"    Visibility="Visible"  SelectionHighlightColor="#FFB1B4BE" Margin="2,5,0,0" Text="SKU:" Grid.Column="1" Grid.Row="1"></TextBlock>
                <TextBlock  Grid.Column="1"
                            Grid.Row="0"
                            Text="{x:Bind status}" 
                            x:Phase="2"
                            Foreground="Gray"
                             FontSize="12"
                             Style="{ThemeResource BaseTextBlockStyle}"
                            Margin="32,5,0,0"
                            x:Name="sku_layout"/>

            </Grid>
        </DataTemplate>
    </Page.Resources>

的ListView:

<ListView x:Name="MasterListView"                 
                  UseLayoutRounding="False"
                  ScrollViewer.VerticalScrollMode="Enabled"                 
                  BorderBrush="#FFA70EAA"
                  SelectionChanged="OnSelectionChanged"
                  IsItemClickEnabled="True"
                  ShowsScrollingPlaceholders="False"
                  ItemTemplate="{StaticResource datatemplate1 }"
                  ItemClick="OnItemClick"
                  Grid.Column="0"
                  Grid.Row="1"
                    >

            <ListView.ItemContainerStyle>


                <Style TargetType="ListViewItem">

                    <Setter Property="HorizontalContentAlignment"  Value="Stretch" />
                </Style>
            </ListView.ItemContainerStyle>

        </ListView>

我也放了一些屏幕截图,这样你就可以轻松理解。

图像

List view issue

1 个答案:

答案 0 :(得分:3)

将此模板添加到ListViewItem的样式中:

<Setter Property="Template">
  <Setter.Value>
    <ControlTemplate TargetType="ListViewItem">
      <ListViewItemPresenter
          ContentTransitions="{TemplateBinding ContentTransitions}"
          SelectionCheckMarkVisualEnabled="True"
          CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
          CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
          DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}"
          DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}"
          FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}"
          FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}"
          PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
          PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}"
          PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
          SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}"
          SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
          SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}"
          PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}"
          SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}"
          DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
          DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}"
          ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
          HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
          VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
          ContentMargin="{TemplateBinding Padding}"
          CheckMode="Inline"/>
    </ControlTemplate>
  </Setter.Value>
</Setter>

在这里你可以删除或修改你想要的东西,看起来你想将SelectedBackground颜色改为DarkGrey。