2013-06-06 11 views

Odpowiedz

15

Możesz dodać to sam, jeśli chcesz.

np. coś

public class TapBehaviour 
    { 
     public ICommand Command { get;set; } 

     public TapBehaviour(UIView view) 
     { 
      var tap = new UITapGestureRecognizer(() => 
      { 
       var command = Command; 
       if (command != null) 
        command.Execute(null); 
      }); 
      view.AddGestureRecognizer(tap); 
     } 
    } 

    public static class BehaviourExtensions 
    { 
     public static TapBehaviour Tap(this UIView view) 
     { 
      return new TapBehaviour(view); 
     } 
    } 

    // binding 
    set.Bind(label.Tap()).For(tap => tap.Command).To(x => x.Go); 

myślę, że będzie działać - ale to jest kodowanie żyć tutaj!


zaawansowane> Jeśli chcesz, możesz też usunąć potrzebę For(tap => tap.Command) części rejestrując domyślną właściwość wiązania dla TapBehaviour - zrobić to nadpisanie Setup.FillBindingNames i zastosowanie:

registry.AddOrOverwrite(typeof (TapBehaviour), "Command"); 

po tym , następnie wiązania mogą być:

set.Bind(label.Tap()).To(x => x.Go); 

+0

dziękuję bardzo! Mimo drobnych pomyłek wszystko działa jak czar! – Agat

+0

Edytuj odpowiedź, aby poprawić błędy. Dzięki. – Stuart

+0

Zaktualizowano. To była sztuczka, aby zmienić tylko 4 znaki (ze względu na ograniczenia stackoverflow). on on – Agat

13

Tylko dla REFE odrodzenie. Nowsza wersja MvvMcross obejmuje rozszerzenie metody UIView (patrz MvxTapGestureRecognizerBehaviour) po wyjęciu z pudełka, które można wykorzystać do wiązania gest dotknięcie:

using Cirrious.MvvmCross.Binding.Touch.Views.Gestures; 

// in this case "Photo" is an MvxImageView 
set.Bind(Photo.Tap()).For(tap => tap.Command).To("OpenImage"); 
+1

Dzięki za referencję. Dodałem narzędzie do rozpoznawania gestów do przesuwania: https://github.com/MvvmCross/MvvmCross/pull/1266 – SimonSimCity

+0

To jest amazeballs. Nie wiem, jak nie wiedziałem o tych rozszerzeniach. Zaoszczędziłem tyle pracy związanej z dotknięciem na UIStackview. – NovaJoe

Powiązane problemy