我正在使用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>
这可以通过使用Custom Renderer]来完成
using UIKit; using Xamarin.Forms.Platform.iOS; using Xamarin.Forms; using App7.iOS; [assembly:ExportRenderer(typeof(ViewCell),typeof(MyViewCellRenderer))] namespace App7.iOS { public class MyViewCellRenderer: ViewCellRenderer { public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv) { var cell= base.GetCell(item, reusableCell, tv); cell.SelectedBackgroundView = new UIView { BackgroundColor = Color.Transparent.ToUIColor(), }; cell.SelectionStyle = UITableViewCellSelectionStyle.None; return cell; } } }
在xaml中
<CollectionView.ItemTemplate >
<DataTemplate >
<ViewCell>
<ContentView BackgroundColor="Transparent" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Margin="0, 0, 0, 20" />
</ViewCell>
</DataTemplate>
</CollectionView.ItemTemplate>