考虑以下代码:
<Mvx.MvxListView
android:id="@+id/items_list"
style="@style/ListNoDividers"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_above="@+id/footer_panel"
android:layout_below="@+id/intro_text"
local:MvxBind="ItemsSource Items;ItemClick DoItCommand"
local:MvxItemTemplate="@layout/item_template" />
我知道当我点击列表中的项目时,将调用DoItCommand
并且绑定的项目将作为命令参数过去。
如何在非MvxListView中使用相同的内容,例如此代码段:
<LinearLayout
android:id="@+id/item1"
style="@style/ItemStyle"
local:MvxBind="Click DoItCommand, CommandParameter=PropertyInViewModel"
android:layout_marginBottom="@dimen/HalfDefaultInnerMargin" />
<LinearLayout
android:id="@+id/item1"
style="@style/ItemStyle"
local:MvxBind="Click DoItCommand, CommandParameter=OtherPropertyInViewModel"
android:layout_marginBottom="@dimen/HalfDefaultInnerMargin" />
底线是我需要使用命令参数将属性值传递给DoItCommand
。
答案 0 :(得分:1)
正如评论中指出的那样,使用this的类似方法,解决了这个问题!
public class MyLinearLayout : LinearLayout
{
public HhLinearLayout(Context context, IAttributeSet attrs)
: base(context, attrs)
{
Click += LinearLayoutClick;
}
public ICommand Command { get; set; }
public object CommandParameter { get; set; }
private void LinearLayoutClick(object sender, EventArgs e)
{
var command = Command;
var commandParameter = CommandParameter;
if (command == null || !command.CanExecute(commandParameter))
{
return;
}
command.Execute(commandParameter);
}
}