本文共 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不再起作用:您还可以使用TableView作为页面导航菜单或使用主/详细页面,对于这些特定的应用程序,您可能想知道ListView或TableView是否适合作业。 一般来说,如果你有一个项目集合应该以相同的方式显示,那么它就是ListView,或者TableView用于可能需要个别关注的较少项目。可以肯定的是,你肯定会在前面的章节中看到更多的例子。转载地址:http://dubxa.baihongyu.com/