假设我想在我的XAML中定义一些数据然后在同一个XAML中的多个位置使用,如下所示:
<custom:Definition Identifier="MyTemplate">
<custom:Data Value="3" />
<custom:Data Value="6" />
<custom:Data Value="12" />
</custom:Definition>
<custom:Control Template="MyTemplate" />
<custom:Control Template="MyTemplate" />
<custom:Control Template="MyTemplate" />
所以“模板”对象根本没有显示在UI中,它只是数据。我以为我可以定义一个派生自Element的对象,如下所示:
[ContentProperty("Content")]
public class Definition : Element
{
public static readonly BindableProperty ContentProperty = BindableProperty.Create(nameof(Content), typeof(List<object), typeof(Definition), null);
public List<object> Content { get; set; }
public string Identifier {get; set; }
}
但是,当我这样做时,XAML抱怨“没有找到'内容'的属性,可绑定属性或事件,或者值和属性之间的类型不匹配”。
对于'Content'属性的类型,或者我在标签内放入XAML的内容(即使Definition标签没有子节点)也没关系,我总是得到相同的错误消息。
如何将非UI元素添加到XAML?
答案 0 :(得分:0)
您的可绑定属性不应设置为如下所示?
[ContentProperty("Content")]
public class Definition : Element
{
public static readonly BindableProperty ContentProperty = BindableProperty.Create(nameof(Content), typeof(List<object>), typeof(Definition), null);
public List<object> Content
{
get { return (List<object>)GetValue(ContentProperty); }
set { SetValue(ContentProperty, value); }
}
public string Identifier {get; set; }
public Definition()
{
Content = new List<object>();
}
}
我喜欢你的目的。它适用于许多应用程序。
您的课程注入将在图像上突出显示: