如何在XAML中声明StringDictionary的数组?

时间:2010-08-25 17:31:21

标签: wpf xaml

我知道我可以像这样在XAML中声明一个字符串数组:

<x:Array Type="{x:Type System:String}">
   <System:String> first </System:String>
   <System:String> second </System:String>
   <System:String> third </System:String>
</x:Array>

如何在XAML中声明System.Collections.Specialized.StringDictionary数组

<x:Array Type="{x:Type Specialized:StringDictionary}">
    <Specialized:StringDictionary>
        (((what do I put here?)))
    </Specialized:StringDictionary>
</x:Array>

谢谢!

2 个答案:

答案 0 :(得分:0)

无。你不能在XAML中这样做。

填充StringDictionary只有一种方法:调用它的Add(string,string)方法。 XAML不允许调用方法。仅分配属性,并且,作为特殊情况,填充实现ICollection<T>的集合,而StringDictionary则不会。

答案 1 :(得分:0)

没有内置的方式来支持它,但有两个选项让你靠近。

如果你使用的是.NET 4并且没有编译你的XAML(极不可能) 你可以做这样的事情

http://blogs.windowsclient.net/rob_relyea/archive/2009/06/01/xaml-using-generic-types-in-xaml-2009.aspx

同样,对于大多数人来说,这确实不是一个可行的解决方案,但它是可能的。

您很可能希望创建自定义标记扩展以支持通用集合初始化。像这样:

http://blogs.msdn.com/b/mikehillberg/archive/2006/10/06/limitedgenericssupportinxaml.aspx

调整他的最后一个解决方案,包括键和值,它应该到达你想要的位置,