如果我有一个简单的对象:
class MyObject
{
public string MyValueProperty { get; set; }
}
如果我想在XAML中实例化它并设置属性(如下所示),则可行:
<local:MyObject MyValueProperty="SomeValue" />
但是,如果我的对象上有集合属性:
class MyObject
{
public MyObject() { this.MyCollectionProperty = new List<string>(); }
public IList<string> MyCollectionProperty { get; set; }
}
然后我无法弄清楚如何通过XAML向它添加项目。我希望能做的是:
<local:MyObject>
<local:MyObject.MyCollectionProperty>
<sys:String>One</sys:String>
<sys:String>Two</sys:String>
<sys:String>etc</sys:String>
</local:MyObject.MyCollectionProperty>
</local:MyObject>
我试过这个,但是我得到一个解析异常,说明我无法将String
设置为IList<string>
类型的属性,并且我意识到我可以通过添加实例化来解决这个问题。标记的“列表”,但我想避免这种情况。
有什么建议吗?
答案 0 :(得分:0)
解决了 - 问题是因为我的属性被定义为IList<T>
,因此XAML解析器无法确定如何实例化适当的实例(即使它已经已经指定的实例。
将属性声明更改为List<string>
使其正常工作:
class MyObject
{
public MyObject() { this.MyCollectionProperty = new List<string>(); }
public List<string> MyCollectionProperty { get; set; }
}