2017-03-25 1 views
0

Je suis un nouveau formulaire Xamarin. J'ai créé un simple projet de formes xamarin avec mvvmcross (Hello World très simple pour commencer), mais quand j'ai implémenté une commande de liaison, et non pas un effet de changement de texte d'étiquette. Mon code Xaml et ViewModel ci-dessous.Xamarin Forms + commande de liaison Mvvmcross ne fonctionne pas

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     xmlns:vm="clr-namespace:MvvmCross.ViewModels;assembly=MvvmCross" 
     x:Class="MvvmCross.Views.HelloView"> 
<StackLayout> 
    <StackLayout.BindingContext> 
     <vm:HelloViewModel /> 
    </StackLayout.BindingContext> 
    <Entry HorizontalOptions="Fill" VerticalOptions="Center" Text="{Binding Name, Mode=TwoWay }"/> 
    <Button Text="Hello" HorizontalOptions="Center" VerticalOptions="Center" Command="{Binding HelloCommand}" /> 
    <Label HorizontalOptions="Fill" VerticalOptions="Center" FontSize="15" Text="{Binding Hello, Mode=TwoWay}" /> 
</StackLayout> 

using MvvmCross.Core.ViewModels; 
using System; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Input; 

namespace MvvmCross.ViewModels 
{ 
    public class HelloViewModel: Core.ViewModels.MvxViewModel 
    { 
    private string _name; 
    public HelloViewModel() 
    { 
     Hello = "Your name"; 
    } 
    public string Name 
    { 
     get { return _name; } 
     set { _name = value; RaisePropertyChanged(() => Name); } 
    } 
    private string _hello; 

    public string Hello 
    { 
     get { return _hello; } 
     set { _hello = value; RaisePropertyChanged(() => Hello); } 
    } 

    private ICommand _helloCommand; 

    public ICommand HelloCommand 
    { 
     get { _helloCommand = _helloCommand ?? new MvxCommand(ShowHello); return _helloCommand; } 
    } 

    private void ShowHello() 
    { 
     // not change label text so sadly 
     Hello = Name.ToString(); 
     Debug.WriteLine(Hello); 
    } 
} 

}

Merci pour tous aider

+0

Ne les propriétés du texte travail? Ou est-ce juste la commande qui échoue? – Cheesebaron

+0

Les propriétés du texte fonctionnent, mais dans l'interface utilisateur lorsque l'exécution ne fonctionne pas. – kevindang

+0

Pour moi, il semble que le BindingContext n'est pas correct alors. – Cheesebaron

Répondre

-1

a-t-u définir le BindingContext?

Dans votre HelloView.xaml.cs:

public HelloView() { 
    BindingContext = new HelloViewModel(); 
} 

Je suis sur mobile, vraiment difficile à taper ..

+0

Je pense que je l'ai défini avec le code xaml kevindang