C# 表单,创建可单击的框架(背景)
由于按钮仅限于在Xamarin中使用其内部图像。表单和C# 表单,创建可单击的框架(背景),c#,xaml,xamarin.forms,frame,C#,Xaml,Xamarin.forms,Frame,由于按钮仅限于在Xamarin中使用其内部图像。表单和StackLayout不支持CornerRadius属性,我们决定使用Frame代替它们,执行Tapped事件,但问题是单击后背景不会改变。 那么,我如何创建并设置一个可点击的背景框呢?好吧,你无法处理xamarin表单中的视觉状态。但是,您可以使用下面的代码来使用自定义渲染器实现状态转换 public class CustomFrameRenderer : Xamarin.Forms.Platform.Android.AppCompat.F
StackLayout
不支持CornerRadius
属性,我们决定使用Frame
代替它们,执行Tapped
事件,但问题是单击后背景不会改变。
那么,我如何创建并设置一个可点击的背景框呢?好吧,你无法处理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;
}
}
}
公共类CustomFrameRenderer:Xamarin.Forms.Platform.Android.AppCompat.FrameRenderer
{
私色背景色;
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
backgroundColor=Element.backgroundColor;
Control.Touch+=Control\u Touch;
}
私有无效控制_Touch(对象发送器,TouchEventArgs e)
{
开关(如事件、动作)
{
案例MotionEventActions.Down:
Element.BackgroundColor=Color.Green;
打破
case MotionEventActions.Up:
Element.BackgroundColor=背景色;
打破
}
}
}
注意:上面的代码会影响所有帧,因此更好地子类化并创建一个新帧,以避免整个应用程序中的背景色转换。那里的控件是什么?框架未实现任何控件?控件是cardview(Xamarin.forms框架元素的本机元素)