【发布时间】:2022-04-15 22:20:31
【问题描述】:
我正在使用 CollectionView,当用户选择一个项目时,我根本不希望 SelectedItem 显示背景颜色。我已尝试通过按照 Xamarin 文档中的说明使用 VisualStateManager 将 BackgroundColor 属性设置为透明来实现此效果。但是,项目的背景不是不可见,而是在选择时变为灰色。该代码有效。如果我将其设置为红色,我会看到红色。但我不能让背景完全消失。
这发生在 iOS 中。
谁能告诉我怎么做?
这是我的代码:
<Style TargetType="ContentView">
<Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="Selected">
<VisualState.Setters>
<Setter Property="BackgroundColor"
Value="Transparent" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
</Style>
<CollectionView Grid.Row="0" ItemsSource="{Binding Lessons}" BackgroundColor="Transparent"
SelectedItem="{Binding SelectedLesson, Mode=TwoWay}" HorizontalOptions="FillAndExpand"
SelectionMode="Single"
cal:Message.Attach="[Event SelectionChanged] = [Action ActivateLesson]">
<CollectionView.ItemTemplate >
<DataTemplate x:DataType="engineVm:LessonViewModel">
<ContentView BackgroundColor="Transparent" cal:View.Model="{Binding}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Margin="0, 0, 0, 20" />
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
【问题讨论】:
-
我对 CollectionView 不太熟悉。这是我必须使用 ListView stackoverflow.com/questions/59671543/… 的解决方案,可能会有所帮助
-
谢谢,使用该解决方案,您是否尝试使其透明而不仅仅是不同的颜色?
-
我尝试了不同的颜色,但不明白为什么透明的行为会有所不同,但不知道我曾经使用透明进行过明确测试
-
@Lucas.. 我很快就会用 ListView 再试一次。我相信这个解决方案会奏效。我开始遇到 CollectionView 的一个错误,当我将设备旋转到横向模式然后再回到纵向模式时,collectionView 会丢失列表中的第一项。 ListView 不这样做。
-
使用文档中推荐的方法,它使用VisualStateManager来改变背景颜色。 docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/…
标签: xamarin xamarin.forms xamarin.ios