Как объявить массив StringDictionary в XAML? - PullRequest
0 голосов
/ 25 августа 2010

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 августа 2010

Нет встроенного способа поддержки, но есть два способа приблизить вас.

Если вы работаете в .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 голосов
/ 25 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...