微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Collectionview 上设置选择背景颜色并保持材质波纹

如何解决在 Collectionview 上设置选择背景颜色并保持材质波纹

我有一个像这样的集合视图:

                         <CollectionView SelectionMode="Single" WidthRequest="200" HeightRequest="144" x:Name="listViewLanguageMenu"  HorizontalOptions="End" VerticalOptions="Start" ItemSizingStrategy="MeasureAllItems">
                         <CollectionView.ItemTemplate >
                             <DataTemplate >
                                 <StackLayout Style="{StaticResource languageMenuStyle}" HeightRequest="40"  Padding="25,4,5,4" Margin="0" Spacing="0" HorizontalOptions="End" VerticalOptions="Center"  Orientation="Horizontal">
                                     <Image VerticalOptions="CenterandExpand" Aspect="AspectFit" Source="{Binding ImageSourceLanguage}"></Image>
                                     <Label VerticalOptions="CenterandExpand" FontSize="18" Margin="5,0"  VerticalTextAlignment="Center" Text="{Binding LanguageName}"></Label>
                                 </StackLayout>
                             </DataTemplate>
                         </CollectionView.ItemTemplate>
                     </CollectionView>

如果我像这样在 Style 中设置背景:

  <Style targettype="StackLayout" x:Key="languageMenuStyle">        
     <Setter Property="visualstatemanager.VisualStateGroups">
         <VisualStateGroupList>
             <VisualStateGroup x:Name="CommonStates">
                 <VisualState x:Name="Selected">
                     <VisualState.Setters>
                         <Setter Property="SelectableItemBackground" Value="{StaticResource buttonBackgroundColor}"/>
                         <Setter Property="Visual" Value="Material"></Setter>
                     </VisualState.Setters>
                 </VisualState>
                 <VisualState x:Name="normal" >
                     <VisualState.Setters>
                         <Setter Property="Visual" Value="Material"></Setter>
                     </VisualState.Setters>
                 </VisualState>
             </VisualStateGroup>
         </VisualStateGroupList>
     </Setter>
 </Style>

选择颜色现在已成功更改,但我不再拥有标准颜色在选择时的材质波纹。如何更改选择颜色并产生材质波纹?

谢谢。

您好,

解决方法

我用你的代码来测试,你为stacklayout创建了languageMenuStyle样式,但是stacklayout没有SelectableItemBackground属性,我修改了stacklayout的languageMenuStyle,在改变collectionview选择颜色时collectionview仍然有材质波纹。

 <Style x:Key="languageMenuStyle" TargetType="StackLayout">
        <Setter Property="VisualStateManager.VisualStateGroups">
            <VisualStateGroupList>
                <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal" />
                    <VisualState x:Name="Selected">
                        <VisualState.Setters>
                            <Setter Property="BackgroundColor" Value="Green" />
                        </VisualState.Setters>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateGroupList>
        </Setter>
    </Style>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。