Инициализировать массив из XAML во время выполнения - PullRequest
0 голосов
/ 03 марта 2012

Я бы хотел инициализировать массив из XAML во время выполнения, вроде как на Android. Я пытался сделать это так:

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:coll="clr-namespace:System.Collections;assembly=mscorlib">

<coll:ArrayList x:Key="Hello"></coll:ArrayList>

Но когда я пытаюсь загрузить его из XAML, как это

 new ResourceDictionary { Source = new Uri("Commands/MPC/resources.xaml", UriKind.Relative) }

Я получаю исключение. Не уверен, правильно ли я это делаю.

1 Ответ

0 голосов
/ 03 марта 2012

Вы не можете использовать System.Collections.ArrayList в Silverlight, потому что в Silverlight его нет.См. документацию MSDN для пространства имен System.Collections .

Одна вещь, которую вы можете сделать, это создать подкласс System.Collections.Generic.List , который не выполняет ничего, кроме заполнениязначение для параметра универсального типа:

using System.Collections.Generic;

public class MyList : List<object>
{
    // Class has empty body
}

Затем вы можете использовать его в XAML:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mycoll="clr-namespace:MyNamespace;assembly=MyAssembly">

    <mycoll:MyList x:Key="Hello"></mycoll:MyList>

</ResourceDictionary>

Если вы знаете, что собираетесь использовать этот класс только с объектамивведите SomeType, вы можете создать подкласс List<SomeType> вместо List<object>.

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