我正在尝试使用fire MvxCommand与CommandParameter,但面临以下问题: MyView.axml包含:
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1"
local:MvxBind="Click MyCommand, CommandParameter=foo" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button2"
local:MvxBind="Click MyCommand, CommandParameter=bar" />
</LinearLayout>MyViewModel.cs:
public class MyViewModel : MvxViewModel
{
public ICommand MyCommand { get; private set; }
public MyViewModel()
{ // param is null
MyCommand = new MvxCommand<string>(param =>
{
if (param == "foo")
{
// do something
}
else if (param == "bar")
{
// do something else
}
});
}
}但是,当我检查param变量是空时。
我做错什么了?
发布于 2013-06-21 13:16:46
您的代码在我的源代码树的头上为我工作。
但这一功能只有两周的历史。
我的猜测是,这个特性要么没有进入您正在使用的发布版本,要么存在一个bug。
您能检查一下这个绑定的调试跟踪吗?那里有什么消息吗?
CommandParameter是一个未知的符号,那么我猜您需要自己构建最新的源代码--或者等待新版本的发布。我知道我们修复了一个值转换问题,其中基于Cirrious.MvvmCross.Binding.dll的ValueConverter不只是通过覆盖Setup.ValueConverterAssemblies来注册这个CommandParameter所需的ValueConverter。
发布于 2018-12-30 20:27:13
我今天正在做CommandParameter编码,您需要做几个修复。axml代码应该包含CommandParameter='yourParameter‘,如下所示:
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1"
local:MvxBind="Click MyCommand, CommandParameter='foo'" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button2"
local:MvxBind="Click MyCommand, CommandParameter='bar'" />即使您想要捕获Integer,仍然需要以单引号传递它,如下所示:Command参量=‘1234’
在C#代码中,最重要的是从构造函数中删除MvxCommand。这应视为财产。
public class MyViewModel : MvxViewModel
{
public MyViewModel() { }
public MvxCommand<string> MyCommand
{
get
{
return new MvxCommand<string>(param =>
{
if (param == "foo")
{
// do something
}
else if (param == "bar")
{
// do something else
}
});
}
}
}这是在MvvmCross6中完成的。对于以前的版本,它应该可以正常工作。
https://stackoverflow.com/questions/17234539
复制相似问题