xamarin - 我们可以使用 Tap Gesture Recognizer 为普通视图(例如标签)添加视觉状态吗?
问题描述
由于一些复杂的 UI 要求,我们使用带有 Tap Gesture 的 Frame 来代替 Button。是否可以为普通视图添加视觉状态(“Focused”、“Clicked”、“Disabled”)?
解决方案
您可以创建一个自定义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;
推荐阅读
- linux - 如何在 Ubuntu AWS 实例中禁用 IPV4 并仅使用 IPV6
- typescript - 为什么布尔值不像布尔值?
- osgi - gogo shell 不能工作 apache felix 6.0.3?
- javascript - 将函数传递给函数和不同长度的参数
- python - Python 的运行长度编码输出
- javascript - 如何编写项目相互依赖的递归?
- bash - 将标准输入的副本从 bash 脚本本身重定向到文件
- python - Django 执行出错,AttributeError: 'NoneType' 对象没有属性 'split'
- python-3.x - 尝试使用 geopy 和 ArcGIS 时出现错误 502
- python - 从列表中删除一个元素并返回截断的列表