首页 > 解决方案 > 将 BackGroundColor 更改为 CollectionView 的元素

问题描述

CollectionView我有一个DateTime属性的项目,在启动时我选择与今天日期匹配的项目

public class DateColorConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (((DateTime)value).Date == DateTime.Today) return Color.Blue;
            return Color.Gray;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }
    }

如果我按下不同的元素,该元素会变成蓝色,

private void SelectedDate_Tapped(object sender, EventArgs e)
    {               
            var model = (Grid)sender;
            model.BackGroundColor=Color.Blue;
    }

我的收藏视图

<CollectionView
     x:Name="ColCalendar"
     RelativeLayout.YConstraint="{ConstraintExpression
     Type=Constant,
     Constant=68}"
     RelativeLayout.WidthConstraint="{ConstraintExpression
     Type=RelativeToParent,
     Property=Width,
     Factor=1}"
     HeightRequest="45">
     <CollectionView.ItemsLayout>
         <LinearItemsLayout Orientation="Horizontal" ItemSpacing="7"/>
     </CollectionView.ItemsLayout>
     <CollectionView.ItemTemplate>
           <DataTemplate>
                 <Grid BackgroundColor="{Binding Datet,Converter={StaticResource DateColor}}" RowSpacing="0.1" xct:TouchEffect.NativeAnimation="True" xct:TouchEffect.PressedBackgroundColor="LightGray" xct:TouchEffect.PressedOpacity="0.1">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="9"/>
                                    <RowDefinition Height="20"/>
                                    <RowDefinition Height="8"/>
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="43"/>
                                </Grid.ColumnDefinitions>
                                <Grid.GestureRecognizers>
                                    <TapGestureRecognizer Tapped="SelectedDate_Tapped"/>
                                </Grid.GestureRecognizers>
                                <Label Grid.Row="0" Text="{Binding Giorno}" FontSize="8" TextColor="White" HorizontalTextAlignment="Center"/>
                            </Grid>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>

但我希望自动选择的那个再次变灰。我该怎么办?

标签: c#xamarin.forms

解决方案


推荐阅读