这可能是一个愚蠢的问题,但我只是想知道,因为我是Xamarin.forms的新手。
我们可以设置' GestureRecognizers'很有型。例如,我想为下面的标签创建一个样式......
<Style TargetType="Label" x:Key="LabelStyle">
<Setter Property="GestureRecognizers">
<Setter.Value>
<TapGestureRecognizer Command="{Binding EditSectionCommand}"/>
</Setter.Value>
</Setter>
</Style>
但它显示编译时错误&#39;无法解决标签上的GestureRecognizers问题。
感谢任何帮助。
答案 0 :(得分:1)
您无法在样式中设置此 onDeleteClick(id) {
console.log(id);
}
属性。由于GestureRecognizers
不是默认标签中的可绑定属性。
如果您确实想使用Style配置GestureRecognizers
,可以尝试构建自定义标签。定义一个可绑定的命令属性,用于处理标签的TapGestureRecognizer
事件:
TapGestureRecognizer
最后,您可以在XAML中使用此命令:
public class CustomLabel : Label
{
public ICommand MyCommand
{
get
{
return (ICommand)GetValue(MyCommandProperty);
}
set
{
SetValue(MyCommandProperty, value);
}
}
public static readonly BindableProperty MyCommandProperty = BindableProperty.Create(nameof(MyCommand), typeof(ICommand), typeof(CustomLabel), null,
propertyChanged: (bindable, oldValue, newValue) =>
{
// Add a Tap gesture to this label, and its command is the bindableproperty we add above
var control = (CustomLabel)bindable;
control.GestureRecognizers.Clear();
TapGestureRecognizer tap = new TapGestureRecognizer();
tap.Command = newValue as ICommand;
control.GestureRecognizers.Add(tap);
});
}