Xamarin.Forms listview中的button按钮,实现带着参数返回上一级页面
今天在做列表显示的时候遇到一个问题,就是在ListView中如何才能让一个button的按钮工作并且包含参数呢?
其实有点类似于rep里的控件无法起获取一样。在Xamarin中,当你button绑定事件并不包含在listview的数据源中,那么这个按钮的事件便是无效的。
那么该怎么解决呢?找了一下午终于找到了解决方案
xaml:
<AbsoluteLayout IsVisible="True" HorizontalOptions="EndAndExpand">
<renderers:CiCoButton x:Name="ButtonName" BorderRadius="2" BackgroundColor="{StaticResource color}" HeightRequest="36" WidthRequest="36"
AbsoluteLayout.LayoutFlags="PositionProportional" AbsoluteLayout.LayoutBounds=".5,.5,-1,-1" TextColor="White" Command="{Binding Path=BindingContext.functionName, Source={x:Reference Name=ListviewName}}"
CommandParameter="{Binding Id}" />
<Image Source="ic_add_white" AbsoluteLayout.LayoutFlags="PositionProportional" AbsoluteLayout.LayoutBounds=".5,.5,-1,-1"/>
</AbsoluteLayout>
问题的关键在于,Button怎么存数据和如何找到ViewModel中的Command方法
在网上找到这么一种绑定的写法“
{Binding Path=BindingContext.functionName, Source={x:Reference Name=ListviewName}}
”
Path 指的是你的方法名,BindingContext相当于你的上下文,然后用它点出来你的ViewModel中的方法名,后面则是要把数据绑定到哪里,那么,Name,理所应当就是你所在listview中的名字了
ViewModel:
private ICommand _backCommand; public ICommand BackCommand
{
get
{
return _backCommand ?? (_backCommand = new Command<string>(async (id) => {await BackPage(id);}));
}
} private async Task BackPage(string id)
{
var page = Navigation.NavigationStack.FirstOrDefault(p => p is OutPage);
var vm = page.BindingContext as OutViewModel;
if (vm != null)
{
// 你想要做的事情
}
else
{
"Can't find ".ToToast();
}
await Navigation.PopAsync(true);
}
那么,Viewmodel中的command方法就要这样写了,new Command<string>(async (id) => {await BackExamStaffPage(id);} 这里对应着page中Button的CommandParamete
Navigation.NavigationStack.FirstOrDefault(p => p is OutPage);从所有打开的页面中,找到你想要返回的上一个页面(当然如果你不需要参数的话直接Pop就好了)
page.BindingContext as OutViewModel; 利用BindingContext转换为你需要的ViewModel,那么,再接下来,你想干嘛都可以楼
Xamarin.Forms listview中的button按钮,实现带着参数返回上一级页面的更多相关文章
- Xamarin.Forms ListView点击按钮刷新最新数据
最近在研究Xamarin的东西,做到ListView遇到了一些瓶颈,像在数据庞大的情况下,该怎么针对ListView中的数据分组呢? 基于能力有限的问题,暂时写了一个只可以实现功能的临时解决方案,毕竟 ...
- Android处理ListView中的Item中的Button按钮不能点击的问题
问题描述:ListView列表中的Button按钮按钮不能点击 解决办法:在ListView中的Item项的布局文件中加上:android:descendantFocusability="b ...
- 如何在MFC界面开发中响应Button按钮的Down和Up事件
通过尝试有两种方案可以解决这个问题,第一种方案是通过PreTranslateMessage函数在调度消息之前对消息类型进行筛选,第二种方案是重载CButton类,在重载后的类CForTestButto ...
- android中在java代码中设置Button按钮的背景颜色
android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...
- 在datagridview中添加button按钮
.Net的DataGridView控件中,提供了一种列的类型,叫 DataGridViewButtonColumn ,这种列类型是展示为一个 按钮,可以给button赋予相应的text,并且,此but ...
- 菜鸟的Xamarin.Forms前行之路——实现按钮的字体图标(可扩展)
在实际的APP中,带有图标的按钮用到地方还是蛮多的,字体图标往往能更快更生动的传达信息,并且相对于背景图片,字体图标也有着绝对的优势,所以实现按钮的字体图标是值得尝试的. 实现方法:各平台自定义渲染按 ...
- listView中的button控件获取item的索引
在listview中的listitem设置事件响应,如果listitem中有button控件,这时候listitem就不会捕获到点击事件,而默认的是listitem中的button会捕获点击事件.那么 ...
- [Android学习笔记]ListView中含有Button导致无法响应onItemClick回调的解决办法
转自:http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html 问题描述: 当ListView的Item中的控件只是一些展示类 ...
- form中的button按钮在IE11中自动提交表单问题导致弹出框关闭之后表单被重置
最近几天,测试系统,遇到一个兼容性问题,form中有一个button按钮,没有指定type类型,点击按钮弹出框选择值之后回填给form上的一个单行文本框,在IE6.IE7.IE8.IE9.IE10中测 ...
随机推荐
- android模拟器没有键盘的解决方法
刚开始使用android模拟器的时候,发现自己创建的AVD启动后没有出现侧边的键盘,在网上搜索后,发现很多人都有这个问题,也有文章说直接使用PC上的键盘,因为有对应的快捷键.但是,没有键盘,始终不爽! ...
- 临时存存储页面上的数据---Web存储
HTML5 Web存储的两种方法使用 localStorage和sessionStorage 参考: http://www.cnblogs.com/taoweiji/archive/2012/12/0 ...
- gmc银联接口开发demo
1.接口文档 1.1 无gmc界面接口 (dll/ocx) dll调用(posinf.dll)函数名为:int bankall (char * request,char *response),其中第一 ...
- vim - save current file with a new name but keep editing current file
http://superuser.com/questions/414110/vim-save-a-file-as-a-different-filename-but-keep-w-as-the-curr ...
- Docker入门简介
Docker的概念 什么是Docker? Docker是一个开源平台,包含:容器引擎和Docker Hub注册服务器 Docker容器引擎:可以将开发者打包他们的应用和依赖包到一个可一直的容器中,然后 ...
- Sublime Text3 以及 SublimeREPL使用Virtualenv执行python
1. SublimeText3 安装Virtualenv插件(Crtl+Shift+P) 2. 新建python虚拟环境: Crtl+Shift+P,选中Virtualenv:New选项,在底部Vir ...
- Excel Note
公式的引用分为相对引用.绝对引用和混合引用.如果要使公式中的引用随着公式的下拉改变就用相对引用.如=sum(A2:D20),这个公式下拉时引用的单元格就会随着变化.如果要使公式中的引用下拉时不会改变就 ...
- 探索性思维——How to Solve It
我觉得这篇文章和什么都能扯上点关系,比如编程. 很多人已经讨论过数学与编程的关系了,这里不想过多探讨,只是简单提一下:有些人把数学贬低地一文不值,认为做一般的应用软件用不到数学:而有些人则把数学拔高到 ...
- ElasticSearch作为Windows服务启动
由于公司服务器用的Windows服务器,所以你懂得…… 直接下载elasticsearch中文发行版.下载地址是:https://github.com/medcl/elasticsear ...
- hp安装oracle报错解决
hpux上安装oracle 11gR2刚开始报错:集群验证框架内部发生了错误 解决办法http://www.it165.net/database/html/201509/14181.html 将文件后 ...