2017-04-19 49 views
0

为按钮仅限于使用其内部图像Xamarin.Forms而StackLayout不支持CornerRadius财产,我们决定使用Frame,而不是他们的Tapped事件被执行,但问题是背景不会在点击时改变。 那么如何创建并设置一个可点击的背景到框架?Xamarin.Forms,创建可点击帧(背景)

回答

0

AFAIK你不能处理xamarin形式的视觉状态。但是你可以使用下面的代码来实现使用自定义渲染器的状态转换。

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; 
      } 
     } 
    } 

注:以上代码会影响所有的帧,从而更好的子类,并创建一个新的框架,以避免整个应用程序的背景颜色过渡。