c# - 如何清除xamarin中的collectionview选择
问题描述
在第 1 页上,我有一个带有文本/字符串项目列表的集合视图。如果您点击一个项目,它将获取当前点击的文本/字符串并发送到 Page#2。听起来很简单
我遇到的问题:如果您点击 item#1,那么它会将 item#1 发送到 page2,这部分工作正常。但是在第 2 页上,如果您点击返回按钮,然后再次点击第 1 项.. 比什么都没有发生,它不会转到第 2 页
修复:我认为我需要以某种方式清除点击选择,然后将项目发送到第 2 页。但我不知道该怎么做
在第 1 页上,我有一个简单的集合视图。集合视图包含文本/字符串列表
<CollectionView ItemsSource="{Binding MyListItem}"
SelectionMode="Single"
SelectionChanged="CollectionView_SelectionChanged">
<CollectionView.ItemTemplate>
<DataTemplate>
<ContentView>
<!-- Body -->
<Grid Padding="0">
<Frame CornerRadius="3" BorderColor="#f2f4f5" HasShadow="True">
<StackLayout Orientation="Horizontal">
<Image Source="icon_about"
WidthRequest="25" />
<StackLayout VerticalOptions="Center">
<Label VerticalOptions="Center"
FontSize="16"
Text="{Binding .}" />
</StackLayout>
</StackLayout>
</Frame>
处理选择的后端代码是:
private async void CollectionView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var previous = e.PreviousSelection.FirstOrDefault();
var current = e.CurrentSelection.FirstOrDefault();
var route = $"{ nameof(Page2) }?URLCardType={current}";
await Shell.Current.GoToAsync(route);
//clear selection
((CollectionView)sender).SelectedItem = null;
}
更新 ((CollectionView)sender).SelectedItem = null;
修复了清除所选项目的问题,但CollectionView_SelectionChanged
方法是单击运行两次。为什么?这是我所有的代码
解决方案
@jason 谢谢,这对我有用。我只需要检查选择项是否为空而不是什么都不做
private async void CollectionView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var MyCollectionView = sender as CollectionView;
if (MyCollectionView.SelectedItem == null)
return;
var previous = e.PreviousSelection.FirstOrDefault();
var current = e.CurrentSelection.FirstOrDefault();
var route = $"{ nameof(Page2) }?URLCardType={current}";
await Shell.Current.GoToAsync(route);
//clear selection
MyCollectionView.SelectedItem = null;
}
推荐阅读
- node.js - 如何在猫鼬/节点中动态显示图像作为帖子页面的背景图像?
- sql-server - SQL Server 连接查询转换为 MongoDb 查询
- bash - 如何在bash中替换字符串中的变量
- javascript - 当我的汇总项目是另一个项目的依赖项时,是什么捆绑了我的汇总项目
- php - Woocommerce 产品可下载文件
- javascript - D3 Choropleth Map Color Scale 不起作用
- javascript - Sinon,递归和setTimeout
- sql-server - 在 sql 查询中将 varchar 值转换为数据类型 int 时转换失败
- php - PhpSpreadsheet - 如何确定数字是否格式化为文本?
- c - HP-UX cc 使用默认设置来允许空取消引用,这在 RHEL 的 gcc 中是否可行?