2016-07-01 7 views
2

私はWindowsの普遍的なアプリケーションで作業しています。リストビューを選択した背景色を変更したい。システムのデフォルトで選択されている背景色が青で、灰色が必要です。データをリストビューにバインドするためにデータテンプレートを使用しました。UWPの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 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

答えて

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> 

ここでは、DARKGREYにSelectedBackgroundの色を変更したいようにあなたは、削除またはあなたが欲しいものを変更することができ、それが見えます。

+0

このようなコードを編集したばかりです。SelectedBackground = "DarkGrey"しかし、それはうまくいきませんでした。 –

+0

最高のソリューションを提供してくれてありがとうございます。私は20のリストビューを自分のアプリケーションに持っています。このことをすべてのリストビューに適用したいのですが、どのようにスタイルを一般化できるのでしょうか? –

+1

元のListViewテンプレートを書き換えることができないのではないかと思います。このスタイルをすべてのListViewに追加する必要があります。このスタイルをApp.xamlファイルに入れて、参照なしでどこでも使用できれば最善のことです。 –

関連する問題