【发布时间】:2017-04-19 04:38:34
【问题描述】:
由于 Button 仅限于在 Xamarin.Forms 中使用其中的图像并且 StackLayout 不支持 CornerRadius 属性,我们决定使用 Frame 代替它们,实现了 Tapped 事件但问题是点击后背景不会改变。
那么如何为框架创建和设置可点击的背景呢?
【问题讨论】:
标签: c# xaml xamarin.forms frame
由于 Button 仅限于在 Xamarin.Forms 中使用其中的图像并且 StackLayout 不支持 CornerRadius 属性,我们决定使用 Frame 代替它们,实现了 Tapped 事件但问题是点击后背景不会改变。
那么如何为框架创建和设置可点击的背景呢?
【问题讨论】:
标签: c# xaml xamarin.forms frame
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;
}
}
}
注意:上面的代码会影响所有的框架,所以更好的子类化并创建一个新的框架以避免整个应用程序中的背景颜色过渡。
【讨论】: