将Clicked作为可绑定回调属性添加到自定义Xamarin.Forms控件?

时间:2018-01-29 21:54:24

标签: xamarin.forms

以下是我定义属性的方式,它适用于stringbool等其他类型的属性,但它不适用于Command类型:

public static readonly BindableProperty ClickedProperty = BindableProperty.Create(
    nameof(Clicked),
    typeof(Command),
    typeof(MyCustomControl),
    default(Command),
    BindingMode.OneWay,
    propertyChanging: (bindable, oldValue, newValue) => {
        var control = bindable as MyCustomControl;
        if (!control.GestureRecognizers.Contains(gesture))
        {
            control.GestureRecognizers.Add(gesture);
        }
    }
);
public Command Clicked
{
    get { return (Command)GetValue(ClickedProperty); }
    set { SetValue(ClickedProperty, value); }
}

我尝试搜索它为Xamarin.Forms.Button课程完成的操作,但它似乎使用了IButtonController界面,不适合公众使用。

更新

我将属性更改为event类型,现在当我从XAML表单绑定属性时调用访问器,但是propertyChangedpropertyChanging都没有被调用。

public event EventHandler Clicked
{
    add
    {
        lock (gesture)
        {
            gesture.Tapped += value;
        }
    }
    remove
    {
        lock (gesture)
        {
            gesture.Tapped -= value;
        }
    }
}

0 个答案:

没有答案