博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十九章:集合视图(二十一)
阅读量:6303 次
发布时间:2019-06-22

本文共 2265 字,大约阅读时间需要 7 分钟。

一个TableView菜单

除了显示数据或用作表单或设置对话框外,TableView也可以是菜单。 功能上,菜单是按钮的集合,虽然它们可能看起来不像传统的按钮。 每个菜单项都是一个触发程序操作的命令。
这就是TextCell和ImageCell具有Command和CommandParameter属性的原因。 这些单元格可以触发ViewModel中定义的命令,或者只是ICommand类型的其他属性。
MenuCommands程序中的XAML文件将四个TextCell元素的Command属性与名为MoveCommand的属性绑定,并传递给名为“left”,“up”,“right”和“down”的MoveCommand参数:

但MoveCommand属性在哪里? 如果查看TableView的BindingContext,您将看到它引用了XAML文件的根元素,这意味着可能会在代码隐藏文件中找到MoveCommand属性作为属性。

它是:

public partial class MenuCommandsPage : ContentPage{    int xOffset = 0; // ranges from -2 to 2    int yOffset = 0; // ranges from -2 to 2    public MenuCommandsPage()    {        // Initialize ICommand property before parsing XAML.        MoveCommand = new Command
(ExecuteMove, CanExecuteMove); InitializeComponent(); } public ICommand MoveCommand { private set; get; } void ExecuteMove(string direction) { switch (direction) { case "left": xOffset--; break; case "right": xOffset++; break; case "up": yOffset--; break; case "down": yOffset++; break; } ((Command)MoveCommand).ChangeCanExecute(); AbsoluteLayout.SetLayoutBounds(boxView, new Rectangle((xOffset + 2) / 4.0, (yOffset + 2) / 4.0, 0.2, 0.2)); } bool CanExecuteMove(string direction) { switch (direction) { case "left": return xOffset > -2; case "right": return xOffset < 2; case "up": return yOffset > -2; case "down": return yOffset < 2; } return false; }}

Execute方法操纵XAML文件中BoxView的布局边界,使其在AbsoluteLayout周围移动。 如果已将BoxView移动到其中一个边缘,则CanExecute方法将禁用操作。

仅在iOS上,禁用的TextCell实际上显示为典型的灰色,但在iOS和Android平台上,如果CanExecute方法返回false,则TextCell不再起作用:
2018_11_11_125341
您还可以使用TableView作为页面导航菜单或使用主/详细页面,对于这些特定的应用程序,您可能想知道ListView或TableView是否适合作业。 一般来说,如果你有一个项目集合应该以相同的方式显示,那么它就是ListView,或者TableView用于可能需要个别关注的较少项目。
可以肯定的是,你肯定会在前面的章节中看到更多的例子。

转载地址:http://dubxa.baihongyu.com/

你可能感兴趣的文章
在之前链表的基础上改良的链表
查看>>
android编译系统makefile(Android.mk)写法
查看>>
MD5源代码C++
查看>>
Eclipse 添加 Ibator
查看>>
Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
查看>>
Python编程语言
查看>>
十四、转到 linux
查看>>
Got error 241 'Invalid schema
查看>>
ReferenceError: event is not defined
查看>>
男人要内在美,更要外在美
查看>>
为什么要跟别人比?
查看>>
app启动白屏
查看>>
Oracle 提高查询性能(基础)
查看>>
学习知识应该像织网一样去学习——“网状学习法”
查看>>
Hadoop集群完全分布式安装
查看>>
QString,char,string之间赋值
查看>>
我的友情链接
查看>>
Nginx+mysql+php-fpm负载均衡配置实例
查看>>
shell脚本操作mysql数据库 (部份参考)
查看>>
MySql之基于ssl安全连接的主从复制
查看>>