Xamarin Android mvvmlight setCommand无效的强制转换

时间:2015-10-23 08:41:32

标签: xamarin xamarin.android mvvm-light

我正在使用带有mvvmlight 5.0库的Xamarin Android。我很高兴我可以在我的应用程序中使用数据绑定。它在像“点击”这样的简单事件中运行良好。但是,当我绑定到一个事件时,我得到了一些奇怪的东西,这是支持工具栏的NavigationClick事件。我得到了一个无效的强制转换错误如下:

10-23 04:35:05.790 I/MonoDroid(11948): System.InvalidCastException: Cannot cast from source type to destination type.
10-23 04:35:05.790 I/MonoDroid(11948): at (wrapper castclass) object.__castclass_with_cache (object,intptr,intptr) <IL 0x0002c, 0x0006f>
10-23 04:35:05.790 I/MonoDroid(11948): at System.Reflection.EventInfo.AddEventFrame<Android.Support.V7.Widget.Toolbar, System.EventHandler`1<Android.Support.V7.Widget.Toolbar/NavigationClickEventArgs>> (System.Reflection.EventInfo/AddEvent`2<Android.Support.V7.Widget.Toolbar, System.EventHandler`1<Android.Support.V7.Widget.Toolbar/NavigationClickEventArgs>>,object,object) <0x00123>
10-23 04:35:05.790 I/MonoDroid(11948): at System.Reflection.EventInfo.AddEventHandler (object,System.Delegate) [0x00074] in /Users/builder/data/lanes/2185/53fce373/source/mono/mcs/class/corlib/System.Reflection/EventInfo.cs:110
10-23 04:35:05.790 I/MonoDroid(11948): at GalaSoft.MvvmLight.Helpers.Extensions.SetCommand<Android.Support.V7.Widget.Toolbar/NavigationClickEventArgs> (object,string,GalaSoft.MvvmLight.Command.RelayCommand`1<Android.Support.V7.Widget.Toolbar/NavigationClickEventArgs>,GalaSoft.MvvmLight.Helpers.Binding) <0x002b4>
10-23 04:35:05.790 I/MonoDroid(11948): at LieferwagenAndroid.MainActivity.OnCreate (Android.OS.Bundle) [0x00051] in C:\Users\echan1\Documents\Visual Studio 2015\Projects\LieferwagenAndroid\LieferwagenAndroid\MainActivity.cs:51
10-23 04:35:05.790 I/MonoDroid(11948): at Android.Support.V4.App.FragmentActivity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) <IL 0x00013, 0x0008e>
10-23 04:35:05.790 I/MonoDroid(11948): at (wrapper dynamic-method) object.c16833d5-e3e1-469e-9a3a-e4abfcb667ff (intptr,intptr,intptr) <IL 0x00017, 0x00027>
10-23 04:35:05.794 W/art     (11948): JNI RegisterNativeMethods: attempt to register 0 native methods for md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable
10-23 04:35:05.796 D/AndroidRuntime(11948): Shutting down VM

在Activity中,我使用了setCommand:

_supporttoolbar.SetCommand("NavigationClick", App.Locator.Main.NavigationCommand);

在我的ViewModel类中,我将RealyCommand声明如下:

NavigationCommand = new RelayCommand(NavigationClickMethod);

    public void NavigationClickMethod()
    {
        Console.WriteLine("Navigation Clicked......");
    }

因此,如果缺少某些参数,我怎么知道应该传递哪些参数?感谢。

2 个答案:

答案 0 :(得分:-1)

您确定活动名称吗?是不是“点击”而不是“NavigationClick”?

编辑:你应该尝试这个事件“OnOptionsItemSelected”

答案 1 :(得分:-1)

这是一个但我遇到了Visual Studio 2015和Xamarin.Android。它是Xamarin的一部分。您需要打开项目.csproj文件,然后添加缺少的项目。作为一个例子:

<Reference Include="System.Xml.Linq" />
<Reference Include="System.Xml" />
<Reference Include="System.Runtime" />
<Reference Include="System.Globalization" />
<Reference Include="System.ObjectModel" />
<Reference Include="System.Net.Primitives" />

这些是我遗漏的参考资料。