更改 CollectionView 中所选项目的背景颜色不适用于 UWP

问题描述 投票:0回答:1

我想更改所选项目的背景颜色。我尝试过以下解决方案,但没有成功。

<CollectionView x:Name="FlexCategoryType"
                Margin="0"
                HorizontalOptions="FillAndExpand"
                ItemsSource="{Binding ItemsCategory}"
                SelectedItem="{Binding SelectedCategory, Mode=TwoWay}"
                SelectionChanged="FlexCategoryType_SelectionChanged"
                SelectionMode="Single">
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <StackLayout>
                <Label Text="{Binding Name}" />
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup Name="CommonStates">
                        <VisualState Name="Normal" />
                        <VisualState Name="Selected">
                            <VisualState.Setters>
                                <Setter Property="BackgroundColor"
                                        Value="Yellow" />
                            </VisualState.Setters>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
            </StackLayout>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

CollectionView SelectedItem 在 Xamarin Forms 中未突出显示

xamarin xamarin.forms uwp
1个回答
7
投票

更改 CollectionView 中所选项目的背景颜色在 UWP 上不起作用

问题是你没有具体指定

CollectionView
SelectionMode
,默认值是none。请设置为
Single
。并添加
VisualStateGroups
,如下所示

<CollectionView SelectionMode="Single">
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <StackLayout Margin="10">
                <Label Text="{Binding}" VerticalOptions="Center" />
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup Name="CommonStates">
                        <VisualState Name="Normal" />
                        <VisualState Name="Selected">
                            <VisualState.Setters>
                                <Setter Property="BackgroundColor" Value="Yellow" />
                            </VisualState.Setters>
                        </VisualState>

                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
            </StackLayout>
        </DataTemplate>
    </CollectionView.ItemTemplate>
    <CollectionView.ItemsSource>
        <x:Array Type="{x:Type x:String}">
            <x:String>1</x:String>
            <x:String>2</x:String>
            <x:String>3</x:String>
            <x:String>4</x:String>
            <x:String>5</x:String>
        </x:Array>
    </CollectionView.ItemsSource>
</CollectionView>

更新

如何更改

ListView
单元格选定的颜色。

这是

FormsListViewItem
样式,请将其复制到UWP
App.xaml
文件并编辑
SelectedBackground
为您想要的颜色。

例如

<Application.Resources>
    <ResourceDictionary>
        <Style x:Key="FormsListViewItem" TargetType="ListViewItem">
            <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
            <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
            <Setter Property="TabNavigation" Value="Local" />
            <Setter Property="IsHoldingEnabled" Value="True" />
            <Setter Property="Padding" Value="0" />
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            <Setter Property="VerticalContentAlignment" Value="Center" />
            <Setter Property="MinWidth" Value="{ThemeResource ListViewItemMinWidth}" />
            <Setter Property="MinHeight" Value="0" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListViewItem">
                        <ListViewItemPresenter
                    CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
                    ContentMargin="{TemplateBinding Padding}"
                    CheckMode="Inline"
                    ContentTransitions="{TemplateBinding ContentTransitions}"
                    CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
                    DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}"
                    DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}"
                    DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}"
                    DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
                    FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}"
                    FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}"
                    HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                    PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
                    PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}"
                    PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
                    PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}"
                    ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
                    SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}"
                    SelectionCheckMarkVisualEnabled="True"
                    SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
                    SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}"
                    SelectedBackground="SeaGreen"
                    VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>
</Application.Resources>
© www.soinside.com 2019 - 2024. All rights reserved.