XAML 如何从CollectionView选定的项目中删除默认的橙子背景?

im9ewurl  于 2023-02-27  发布在  其他
关注(0)|答案(1)|浏览(129)

这个集合视图是好的,但是在项目选择之后。有可见的橙子背景。我应该如何删除它?

<CollectionView 
                        x:Name="MyCollectionView"
 
                        ItemsSource="{Binding Groups}" 
                        SelectionMode="Single"
                        SelectedItem="{Binding SelectedGroup}"
                        ItemsLayout="HorizontalList"
                        Margin="10,10,0,10">

            <CollectionView.ItemTemplate>

                <DataTemplate x:DataType="models:PlcGroup">

                    <Frame Margin="0,0,5,0" Padding="10,5" HasShadow="False" CornerRadius="10">
                        
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroupList>
                                <VisualStateGroup x:Name="CommonStates">
                                    <VisualState x:Name="Normal" >
                                        <VisualState.Setters>
                                            <Setter Property="Style" Value="{DynamicResource unselectedGroup}" />
                                        </VisualState.Setters>
                                    </VisualState>
                                    <VisualState x:Name="Selected">
                                        <VisualState.Setters>
                                            <Setter Property="Style" Value="{StaticResource selectedGroup}" />
                                        </VisualState.Setters>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateGroupList>
                        </VisualStateManager.VisualStateGroups>
                        
                        <Frame.GestureRecognizers>
                            <TapGestureRecognizer Command="{Binding SelectItem, Source={RelativeSource AncestorType={x:Type viewModels:MainViewModel}}}"
                                                  CommandParameter="{Binding .}"/>
                        </Frame.GestureRecognizers>
                        
                        <Label Text="{Binding Name}"/>
                        
                    </Frame>

                </DataTemplate>
            </CollectionView.ItemTemplate>

        </CollectionView>

将样式更改为DataTemplate的所有后代确实很痛苦,但我只想将颜色设置为框架背景。在理想情况下,我也想更改标签的TextColor,但我放弃了。
似乎问这个问题我需要输入更多的文本,但其实没有太多要问的。

zysjyyx4

zysjyyx41#

这可能是由于CollectionView选定项的默认颜色。我在这里给出了一个变通方法。
您可以将Frame Package 在容器(如StackLayout)中,并将BackgroundColor属性设置为white。将x:Name="myFrame"设置为我们将在VisualStateManager中使用的Frame。

<DataTemplate>
    <StackLayout BackgroundColor="White">
        <Frame x:Name="myFrame" ....

然后VisualStateGroup应附加到StackLayout,因为它是外部容器:

<DataTemplate>
    <StackLayout BackgroundColor="White">
        <Frame x:Name="myFrame"   Margin="0,0,5,0" Padding="10,5" HasShadow="False" CornerRadius="10">              
            <Frame.GestureRecognizers>
            ....
            </Frame.GestureRecognizers>
            <Label Text="{Binding Name}" />                                                                                  
        </Frame>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroupList>
                <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal" >
                        <VisualState.Setters>
                            <Setter TargetName="myFrame" Property="Frame.Style" Value="{DynamicResource unselectedGroup}" />
                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="Selected">
                        <VisualState.Setters>
                            <Setter  TargetName="myFrame" Property="Frame.Style" Value="{StaticResource selectedGroup}" />
                        </VisualState.Setters>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateGroupList>
        </VisualStateManager.VisualStateGroups>   
    </StackLayout>
</DataTemplate>

有关详细信息,请参阅Visual states
希望对你有用。

相关问题