【发布时间】:2019-04-26 23:39:06
【问题描述】:
我在下面得到了这段代码,但我不知道如何使选定的标签变成蓝色背景颜色和白色文本,而不是它在未选择模式下的内容。一次只能选择1个行程,选择的那个需要修改。我想我可以使用数据触发器或行为。我可以弄清楚如何更改命令中的按钮,但我将如何更改其他按钮?被取消选择成灰色?
<CollectionView Grid.Row="1" Grid.Column="0" ItemsSource="{Binding JourneyItems}" SelectionMode="Single" ItemsLayout="{x:Static ListItemsLayout.HorizontalList}">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Horizontal" >
<StackLayout Margin="10,0,10,0" BackgroundColor="LightGray" VerticalOptions="Fill" Orientation="Horizontal" >
<Label Text="{Binding Name}" TextColor="{StaticResource ThemeBkColor}" VerticalTextAlignment="Center" VerticalOptions="Center" />
</StackLayout>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Path=ViewModel.SwitchJourneyCommand, Source={x:Reference ThisJourneysPage}}"
CommandParameter = "{Binding .}" NumberOfTapsRequired="1"/>
</StackLayout.GestureRecognizers>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
【问题讨论】:
-
我没有使用 CollectionView 但在您的项目模型中,创建一个名为 IsSelected (或其他东西)的属性来驱动颜色绑定,然后当另一个项目被选中时,循环所有其他对象并设置IsSelected 为 false ...或使用 MessagingCenter 来执行此操作...不过,我会使用前一种方法。不确定这是否有帮助,但这是一个想法。我假设 CollectionView 会在选择事物时为您提供事件。
标签: c# xaml xamarin xamarin.forms