Xamrin.Forms 用户界面——控件——ListView——ListView 交互
来源:互联网 发布:网络摄像头ip地址破解 编辑:程序博客网 时间:2024/06/16 03:58
ListView交互性
通过实施选择,滑动删除和拉式刷新,将交互功能添加到您的ListView。
- PDF用于离线使用
- 下载PDF
- 相关样品:
- ListView交互性
让我们知道你对此的感受
ListView支持通过以下方式与其呈现的数据进行交互:
- 选择和水龙头 - 响应水龙头和选择/取消选择项目。启用或禁用行选择(默认情况下启用)。
- 上下文操作 - 显示每个项目的功能,例如,滑动到删除。
- 拉扯刷新 - 实现用户从本地体验中获得的拉扯到刷新习惯。
选择和水龙头
ListView
一次支持选择一个项目。默认情况下选择为开启。当用户点击一个项目时,会触发两个事件:ItemTapped
和ItemSelected
。请注意,点击相同的项目两次将不会触发多个ItemSelected
事件,但会触发多个ItemTapped
事件。还要注意,ItemSelected
如果取消选择项目,将被调用。
请注意,ItemSelected
当项目被取消选择并被选中时,它们被称为两者。这意味着您需要SelectedItem
在ItemSelected
事件处理程序中检查null ,然后才能使用它:
void OnSelection (object sender, SelectedItemChangedEventArgs e){ if (e.SelectedItem == null) { return; //ItemSelected is called on deselection, which results in SelectedItem being set to null } DisplayAlert ("Item Selected", e.SelectedItem.ToString (), "Ok"); //((ListView)sender).SelectedItem = null; //uncomment line if you want to disable the visual selection state.}
禁用选择
如果要禁用选择,请处理ItemSelected
事件并将SelectedItem
属性设置为null:
SelectionDemoList.ItemSelected += (sender, e) => { ((ListView)sender).SelectedItem = null;};
启用选择:
请注意,在Windows Phone上,某些单元格,包括SwitchCell
不更新其视觉状态以响应选择。
上下文操作
通常,用户将希望对某个项目采取行动ListView
。例如,考虑邮件应用程序中的电子邮件列表。在iOS上,您可以滑动以删除邮件,在Windows Phone上,可以长按消息,然后将其删除:
上下文动作可以在C#和XAML中实现。下面你会找到两个具体的指南,但是首先让我们来看看这两个的一些关键的实现细节。
上下文操作使用MenuItem
s 创建。MenuItems的点击事件由MenuItem本身引发,而不是ListView。这不同于为单元格处理tap事件,其中ListView引发事件而不是单元格。因为ListView正在提升事件,它的事件处理程序将被给予关键信息,例如选择或点击哪个项目。
默认情况下,MenuItem无法知道它属于哪个单元格。CommandParameter
可MenuItem
用于存储对象,例如MenuItem的ViewCell后面的对象。CommandParameter
可以在XAML和C#中设置。
C#
可以Cell
通过创建MenuItem
s并将其添加到ContextActions
单元的集合中,在任何子类中实现上下文操作(只要它不被用作组头)。您可以为上下文操作配置以下属性:
- 文本 - 菜单项中显示的字符串。
- 点击 - 点击项目时的事件。
- IsDestructive - (可选)当为true时,该项目在iOS上的呈现方式不同。
可以将多个上下文操作添加到单元格中,但只能IsDestructive
设置一个true
。以下代码演示了如何将上下文操作添加到ViewCell
:
var moreAction = new MenuItem { Text = "More" };moreAction.SetBinding (MenuItem.CommandParameterProperty, new Binding ("."));moreAction.Clicked += async (sender, e) => { var mi = ((MenuItem)sender); Debug.WriteLine("More Context Action clicked: " + mi.CommandParameter);};var deleteAction = new MenuItem { Text = "Delete", IsDestructive = true }; // red backgrounddeleteAction.SetBinding (MenuItem.CommandParameterProperty, new Binding ("."));deleteAction.Clicked += async (sender, e) => { var mi = ((MenuItem)sender); Debug.WriteLine("Delete Context Action clicked: " + mi.CommandParameter);};// add to the ViewCell's ContextActions propertyContextActions.Add (moreAction);ContextActions.Add (deleteAction);
XAML
MenuItem
也可以声明地在XAML集合中创建。下面的XAML演示了实现了两个上下文操作的自定义单元格:
<ListView x:Name="ContextDemoList"> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <ViewCell.ContextActions> <MenuItem Clicked="OnMore" CommandParameter="{Binding .}" Text="More" /> <MenuItem Clicked="OnDelete" CommandParameter="{Binding .}" Text="Delete" IsDestructive="True" /> </ViewCell.ContextActions> <StackLayout Padding="15,0"> <Label Text="{Binding title}" /> </StackLayout> </ViewCell> </DataTemplate> </ListView.ItemTemplate></ListView>
在代码隐藏文件中,确保实现Clicked
方法:
public void OnMore (object sender, EventArgs e) { var mi = ((MenuItem)sender); DisplayAlert("More Context Action", mi.CommandParameter + " more context action", "OK");}public void OnDelete (object sender, EventArgs e) { var mi = ((MenuItem)sender); DisplayAlert("Delete Context Action", mi.CommandParameter + " delete context action", "OK");}
拉动刷新
用户已经预期下拉列表的数据将刷新该列表。ListView
支持这个开箱即用的。要启用拉到刷新功能,设置IsPullToRefreshEnabled
为true:
listView.IsPullToRefreshEnabled = true;
用户拉动时拉动刷新:
当用户释放拉时,拉到刷新。这是用户在更新列表时看到的内容:
请注意,从Xamarin.Forms 1.4.3起,Windows Phone 8.1不支持拉式刷新。在Windows Phone 8上,拉入刷新不是本机平台的功能,所以Xamarin.Forms提供了拉入刷新的实现。最后,请注意,如果列表中的所有元素都可以适合屏幕(换句话说,如果不需要垂直滚动),则拉拔更新将无法在Windows Phone上运行。
ListView公开了一些允许您回应到刷新事件的事件。
- 在
RefreshCommand
将被调用和Refreshing
称为事件。IsRefreshing
将被设置为true
。 - 您应该在命令或事件中执行刷新列表视图内容所需的任何代码。
- 当刷新完成后,调用
EndRefresh
或设置IsRefreshing
来false
告诉你做的列表视图。
该CanExecute
属性受到尊重,这为您提供了一种方法来控制是否启用“拉到刷新”命令。
- Xamrin.Forms 用户界面——控件——ListView——ListView 交互
- Xamarin.Forms 用户界面——控件——ListView
- Xamrin.Forms 用户界面——控件——Style——设备样式
- Xamrin.Forms 用户界面——控件——Text——Fonts
- Xamarin.Forms 用户界面——控件——ListView——ListView 性能
- Xamrin.Froms 用户界面——控件——主题
- Xamrin.Forms 基础——Custom Renderers
- Xamarin.Forms 用户界面——控件——ListView——Cell 外观
- Xamarin.Forms 用户界面——控件——ListView——List外观
- Xamrin.Forms 基础——Behaviors——介绍
- Xamrin.Forms 基础——Behaviors——Attached Behaviors
- Xamarin.Forms 用户界面——控件
- Xamairn.Forms 用户控件——控件——ListView——ListView数据源
- Xamarin.Forms 用户界面——控件——页面
- Xamarin.Forms 用户界面——控件——布局
- Xamarin.Forms 用户界面——控件——View
- Xamarin.Forms 用户界面——控件——Cells
- Xamarin.Forms 用户界面——控件——Images
- springboot 热部署 idea
- linux下开启SSH,并且允许root用户远程登录,允许无密码登录
- java的动态代理机制详解
- 排序算法之快速排序
- ubuntu平台下ffmpeg的编译安装方法
- Xamrin.Forms 用户界面——控件——ListView——ListView 交互
- 从Spring HibernateTemplate模板方法设计模式的实现谈起
- 啥是SBC
- MSSQL错误:"SQL Server 无法生成 FRunCM 线程"
- Angular2 http模块
- Docker在Windows下安装Oracle
- Xamarin.Forms 用户界面——控件——ListView——ListView 性能
- pythpn传参f(*a,**a)
- python2:function