2015-03-05 1 views
0

У меня проблема с простой обработкой ICommand с MvvmCross и Xamarin.Forms.Работа с ICommand с Xamarin.Forms и MvvmCross

Я создал проект с MvvmCross плагин для VisualStudio, и у меня просто MainView.xaml и MainViewModel.cs

Я изменил ViewModel (только добавил одну строку + один ICommand)

using System.Diagnostics; 
using System.Windows.Input; 
using Cirrious.MvvmCross.ViewModels; 

namespace XamarinFormsMvvm.Core.ViewModels 
{ 

    public class MainViewModel : BaseViewModel 
    { 

     private string sampleText = "Hello from the Ninja Coder!"; 

     private string sampleText2 = "Hello2"; 

     public MainViewModel() 
     { 

     } 

     public string SampleText 
     { 
      get { return this.sampleText; } 
      set { this.SetProperty(ref this.sampleText, value); } 
     } 

     public string SampleText2 
     { 
      get { return this.sampleText2; } 
      set { this.SetProperty(ref this.sampleText2, value); } 
     } 

     public ICommand StartStopCommand 
     { 
      get 
      { 
       return new MvxCommand(() => 
       { 
        Debug.WriteLine("Test"); 
       }); 
      } 
     } 
    } 
} 

И моя точка зрения (кнопка Добавлена ​​метка +)

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="XamarinFormsMvvm.Forms.Views.MainView" 
      xmlns:viewModels="clr-namespace:XamarinFormsMvvm.Core.ViewModels;assembly=XamarinFormsMvvm.Core" 
      Title="MainView Page" 
      > 
    <ContentPage.BindingContext> 
     <viewModels:MainViewModel /> 
    </ContentPage.BindingContext> 
    <ContentView> 
    <StackLayout> 
     <Label Text='{Binding SampleText}' VerticalOptions='Center' HorizontalOptions='Center'/> 
     <Label Text='{Binding SampleText2}' VerticalOptions='Center' HorizontalOptions='Center'/> 
     <Button Command="{Binding StartStopCommand}" Text="asd" VerticalOptions="Center" HorizontalOptions="Center"/> 

    </StackLayout> 
    </ContentView> 
</ContentPage> 

После запуска, что я получаю исключение:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object 
03-05 18:32:16.898 I/MonoDroid(2699): at Cirrious.CrossCore.Mvx.TryResolve[IMvxCommandHelper] (IMvxCommandHelper& service) [0x00000] in <filename unknown>:0 
03-05 18:32:16.898 I/MonoDroid(2699): at Cirrious.MvvmCross.ViewModels.MvxCommandBase..ctor() [0x00000] in <filename unknown>:0 
03-05 18:32:16.898 I/MonoDroid(2699): at Cirrious.MvvmCross.ViewModels.MvxCommand..ctor (System.Action execute, System.Func`1 canExecute) [0x00000] in <filename unknown>:0 
03-05 18:32:16.898 I/MonoDroid(2699): at Cirrious.MvvmCross.ViewModels.MvxCommand..ctor (System.Action execute) [0x00000] in <filename unknown>:0 
03-05 18:32:16.898 I/MonoDroid(2699): at XamarinFormsMvvm.Core.ViewModels.MainViewModel.get_StartStopCommand() [0x00001] in c:\Users\Tomasz\Documents\Visual Studio 2013\Projects\XamarinFormsMvvm\XamarinFormsMvvm.Core\ViewModels\MainViewModel.cs:49 
........... 

Что не так с этим кодом?

+0

Что здесь происходит: MainViewModel.cs: 49? Представленный вами MainViewModel не имеет 49 строк ... – Cheesebaron

ответ

0

Я только что создал проект с Ninja, как вы это делали, и пропустил свой код на MainViewModel & MainView и все отлично работает. Честно говоря, я должен сказать, что после того, как Ninja создал его, я немного изменил структуру решения.

Вы можете найти мои NinjaMvxForms пустой проект доработан & работает здесь https://github.com/MobiliTips/NinjaMvxForms