我有一个关于 aCollectionView
和 a的问题GridItemsLayout
。在我的应用程序中,我有StackLayout
一个水平的CollectionView(GridItemsLayout)
,其中包含一个绑定到某个类别的 Button。
每当单击/点击按钮时,它都会ListView
根据类别过滤下面的(外科手术类型)。所有这些都工作正常,但是,我想通过更改类别/按钮来突出显示类别/按钮,BackgroundColor
以查看当前用于过滤的类别。
<CollectionView HeightRequest="70"
x:Name="categoryCollection"
ItemsSource="{Binding Categories}"
Margin="20,0,20,0"
SelectionMode="Single">
<CollectionView.ItemsLayout>
<GridItemsLayout Orientation="Horizontal" Span="1" HorizontalItemSpacing="5"/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid Padding="0,5,0,5">
<Button x:Name="categoryButton" Text="{Binding Name}"
Command="{Binding Path=BindingContext.FilterCommand, Source={x:Reference Name=SurgeryListView}}"
CommandParameter="{Binding .}"
CornerRadius="15"
FontFamily="OpenSans" Margin="0,5,10,5"
Opacity="0.6" FontSize="16" TextTransform="None">
</Button>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
<ListView x:Name="listView"
ItemsSource="{Binding Surgeries}"
RefreshCommand="{Binding LoadSurgeriesCommand}"
IsRefreshing="{Binding IsRefreshing}"
IsPullToRefreshEnabled="True"
RowHeight="70"
BackgroundColor="{StaticResource darkThemeBackground}"
ItemTemplate="{StaticResource surgeryDataTemplateSelector}">
<ListView.Behaviors>
<behaviors:EventToCommandBehavior
EventName="ItemTapped"
Command="{Binding SurgerySelectedCommand}"
EventArgsConverter="{StaticResource ItemTappedConverter}">
</behaviors:EventToCommandBehavior>
</ListView.Behaviors>
</ListView>
我尝试使用VisualStates
,但这不起作用,因为点击按钮实际上并没有改变SelectedItem
(需要单击周围/父网格元素)。此外,更改VisualState
仅应用于 Grid 的BackgroundColor
,而不应用于实际按钮的 。
问题:如何通过更改背景颜色来突出显示当前类别/按钮?