我会显示一个帖子列表,如果我点击帖子中的编辑按钮,则会弹出一个警告对话框来编辑帖子。
当我点击列表视图中的按钮时,我尝试绑定当前项目,但我不知道如何访问它。
这是我的代码:
视图模型
private Post _theCurrentPost;
public Post TheCurrentPost
{
get { return _theCurrentPost; }
set
{
_theCurrentPost = value;
RaisePropertyChanged(() => TheCurrentPost);
}
}
private MvxCommand _openEditDialog;
public ICommand OpenEditDialog
{
get
{
_openShareDialog = _openShareDialog ?? new MvxCommand(LoadCurrentSharedPost);
return _openShareDialog;
}
}
private void LoadCurrentSharedPost(Post cur)
{
TheSharedPost = cur;
}
Main.xmla
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/Project"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/content_frame">
<Mvx.MvxListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/ListView"
local:MvxBind="ItemsSource PostsList; ItemClick ShowDetails"
local:MvxItemTemplate="@layout/posttemplate" />
</LinearLayout>
PostTemplate.xmla
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/Project"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/fond_post"
android:paddingTop="10dp">
<TextView
android:id="@+id/Title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
local:MvxBind="Text Title"/>
<TextView
android:id="@+id/Text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/Title"
android:layout_alignParentLeft="true"
local:MvxBind="Text Content"/>
<Button
android:id="@+id/Edit"
android:layout_width="50dp"
android:layout_height="50dp"
local:MvxBind="Click OpenEditDialog"
android:background="@drawable/edit_button" />
</RelativeLayout>
</LinearLayout>
有人知道如何在绑定中发送当前项吗? 我可以从ViewModel启动一个警告对话框,或者我必须在后面的代码中创建一个onclick方法。
感谢。
答案 0 :(得分:1)
要将ListItem作为参数发送,您必须使用&#34;。&#34;至于绑定按钮问题,这里是同一主题Using MvxCommand With CommandParameter binding的另一篇文章,根据它你只需添加CommandParameter,最后它看起来像:
<Button
android:id="@+id/Edit"
android:layout_width="50dp"
android:layout_height="50dp"
local:MvxBind="Click OpenEditDialog, CommandParameter=."
android:background="@drawable/edit_button" />
是的,您可以从ViewModel启动警报对话框。如果您打算使用MvvmCross创建其他项目,我建议您为包含此服务的应用程序创建一个插件,如果您不了解插件,可以在此处查看http://slodge.blogspot.fr/2012/10/build-new-plugin-for-mvvmcrosss.html或在线查找。至于代码,它看起来像这样:
//This goes in core
public interface IAlertService
{
void CreateAlert(string title, string messagem, etc...);
}
//This goes in droid
public class AlertService : IAlertService
{
public void CreateAlert(string title, string messagem, etc...)
{
//Android code for creating AlertDialog
}
}