2010-11-03 35 views
0

如果我有一个简单的目标:如何添加自定义(非依赖性)集合属性值的值在XAML标记

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> 

我已经试过,但我得到一个解析异常,说明我不能设置StringIList<string>类型的属性,我知道我可以可能通过在标记中添加一个List实例来解决这个问题,但我想避免这种情况。

有什么建议吗?

回答

0

的工作了 - 这个问题是因为我的属性被定义为IList<T>等等XAML分析器无法工作,如何实例化一个合适的实例(即使它已经实例指定

更改属性声明到List<string>让它工作:

class MyObject 
{ 
    public MyObject() { this.MyCollectionProperty = new List<string>(); } 

    public List<string> MyCollectionProperty { get; set; } 
}