2017-04-19 2 views
0

que Button est limité à utiliser des images à l'intérieur dans Xamarin.Forms Et StackLayout ne prend pas en charge CornerRadius propriété, nous avons décidé d'utiliser Frame au lieu d'entre eux, l'événement Tapped est mis en œuvre, mais la problème est l'arrière-plan ne change pas en cliquant. Alors, comment puis-je créer et définir un arrière-plan cliquable à l'image?Xamarin.Forms, Créer cliquable Cadre (arrière-plan)

Répondre

0

AFAIK vous ne pouvez pas gérer l'état visuel dans les formes de xamarin. Mais vous pouvez faire quelque chose comme le code ci-dessous pour réaliser la transition d'état en utilisant un moteur de rendu personnalisé.

public class CustomFrameRenderer : Xamarin.Forms.Platform.Android.AppCompat.FrameRenderer 
    { 
     private Color backgroundColor; 

     protected override void OnElementChanged(ElementChangedEventArgs<Frame> e) 
     { 
      base.OnElementChanged(e); 
      backgroundColor = Element.BackgroundColor; 
      Control.Touch += Control_Touch; 
     } 

     private void Control_Touch(object sender, TouchEventArgs e) 
     { 
      switch (e.Event.Action) 
      { 
       case MotionEventActions.Down: 
        Element.BackgroundColor = Color.Green; 
        break; 
       case MotionEventActions.Up: 
        Element.BackgroundColor = backgroundColor; 
        break; 
      } 
     } 
    } 

Note: Au-dessus du code toucherait tous les cadres de la sous-classe afin de mieux et de créer un nouveau cadre pour éviter la transition des couleurs d'arrière-plan dans l'application entière.