我正在尝试设置CollectionView中所有选定项的背景色,我正在为这些项使用GridItemsLayout。如果在CollectionView的DataTemplate here中使用网格布局,我已经看到了更改背景色的方法。但是,我试图通过使用CollectionView固有的GridItemsLayout功能来简化编码。我一直在想一定有一个简单的方法来完成我所错过的。
下面是我当前的XAML,它使用详细的背景色来进行项目选择。
<ScrollView>
<CollectionView x:Name="BrandsToUseCollectionView" ItemsSource="{x:Static vm:BrandsToUseVM.AllBrandNames}"
SelectionMode="Multiple" SelectedItems="{Binding BrandNamesSelected}"
SelectionChanged="OnBrandSelectionChanged" Margin="15,15,15,0">
<CollectionView.ItemsLayout>
<GridItemsLayout Span="2" Orientation="Vertical" VerticalItemSpacing="10" HorizontalItemSpacing="15" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Label FontAttributes="Bold" Padding="0,7,0,0" HeightRequest="40" VerticalOptions="Center"
HorizontalOptions="Center" FontSize="Medium" Text="{Binding .}">
</Label>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</ScrollView>
虽然我可以将<Grid>
插入到DataTemplate中并使用VisualStateManager作为一种变通方法,但我希望你们中经验丰富得多的开发人员能够在现在和将来使用Xaml或(如果需要)在代码隐藏中使这一过程对我和其他人来说更简单。
1条答案
按热度按时间qcuzuvrc1#
我不知道确切的细节,但我假设
OnBrandSelectionChanged
会得到一个已更改项的列表。将
Color BrandBackgroundColor
属性添加到BrandName
类中。如果
BrandName
当前只是string
,定义一个类,并使当前字符串成为其属性之一,然后将Selected
转换为颜色。比如: