首页 > 解决方案 > 我们可以使用 Tap Gesture Recognizer 为普通视图(例如标签)添加视觉状态吗?

问题描述

由于一些复杂的 UI 要求,我们使用带有 Tap Gesture 的 Frame 来代替 Button。是否可以为普通视图添加视觉状态(“Focused”、“Clicked”、“Disabled”)?

标签: xamarinxamarin.forms

解决方案


您可以创建一个自定义Frame添加自定义可绑定属性来实现它。例如,添加三个属性CustomFrame。您可以根据需要添加其他更多自定义属性。

public class CustomFrame :Frame
{
    public static readonly BindableProperty CustomFocusedProperty = BindableProperty.Create("CustomFocused", typeof(bool), typeof(CustomFrame), null);

    public bool CustomFocused
    {
        get { return (bool)GetValue(CustomFocusedProperty); }
        set { SetValue(CustomFocusedProperty, value); }
    }


    public static readonly BindableProperty CustomClickedProperty = BindableProperty.Create("CustomClicked", typeof(bool), typeof(CustomFrame), null);

    public bool CustomClicked
    {
        get { return (bool)GetValue(CustomClickedProperty); }
        set { SetValue(CustomClickedProperty, value); }
    }


    public static readonly BindableProperty CustomDisabledProperty = BindableProperty.Create("DisabledFocused", typeof(bool), typeof(CustomFrame), null);

    public bool DisabledFocused
    {
        get { return (bool)GetValue(CustomDisabledProperty); }
        set { SetValue(CustomDisabledProperty, value); }
    }
}

Xaml中使用:<local:CustomFrame x:Name="CustomFrame" />

然后您可以从自定义属性设置或获取值:

CustomFrame.CustomClicked = true;
CustomFrame.CustomFocused = true;
CustomFrame.CustomDisabled = true;

推荐阅读