2010-08-25 5 views
0

Я знаю, что могу объявить массив строки в XAML как это:Как объявить массив из StringDictionary в 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> 

Как я могу объявить массив System.Collections.Specialized.StringDictionary в XAML

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

Спасибо!

+0

Вы можете добавить поддержку XAML для этого, написав пользовательские 'MarkupExtension '. –

ответ

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

адаптировать свое последнее решение включить ключ и значение, и он должен получить, где вы хотите, своего рода

0

Ничего. Вы не можете сделать это в XAML.

Существует только один способ заполнения StringDictionary: назовите это метод Add(string,string). XAML не позволяет вызывать методы. Только присваивайте свойства и, в качестве специального случая, заполняйте коллекции, которые реализуют ICollection<T>, которых нет в StringDictionary.

Смежные вопросы