我创建了一个从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 ...}
则不能正常工作。
答案 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