使用Xamarin C#创建可绑定属性没有给出任何属性,未找到可绑定属性

时间:2018-10-11 08:46:15

标签: c# xamarin.forms

我创建了一个从StackLayout派生的类:

public class MyStackLayout : StackLayout
{
    private readonly BindableProperty TriggerTypeProperty = BindableProperty.Create("TriggerType", typeof(string), typeof(MyStackLayout), defaultValue: "test", propertyChanged: (b, o, n) => OnTriggerTypePropChanged(b, (string)o, (string)n));

    public string TriggerType
    {
      get
      {
        return (string)GetValue(TriggerTypeProperty);
      }
      set
      {
        SetValue(TriggerTypeProperty, value);
      }
    }

    private static void OnTriggerTypePropChanged(BindableObject bindable, string oldvalue, string newvalue)
    {
      var obj = bindable as MyStackLayout;
      if (obj == null)
      {
        return;
      }

      obj.TriggerType = newvalue;
    }
}

以及在XAML中:

<controls1:MyStackLayout IsVisible="False" TriggerType="{Binding AStringPropertyFromViewModel}">
   ...
</controls1:MyStackLayout>

我遇到错误:

  

找不到“ TriggerType”的属性,可绑定属性或事件,或者   值和属性之间的类型不匹配。

怎么了?

如果我在XAML中使用TriggerType="A string"可以正常工作,如果我使用{Binding ...}则不能正常工作。

1 个答案:

答案 0 :(得分:7)

根据Xamarin文档,以下是定义可绑定属性的方法:

public static readonly BindableProperty EventNameProperty =
BindableProperty.Create ("EventName", typeof(string),typeof(EventToCommandBehavior), null);

尝试将可绑定属性从私有更改为公共,以查看是否可以解决您的问题。

文档的链接:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/bindable-properties