Приветствую всех! Сегодня я покажу как создать коллекцию в коде XAML и использовать его не посредственно в классах на C#. Сразу встает вопрос для чего это вообще нужно, ответ очень простой, все дело в том что такого рода возможность дает использовать не перегружать код в классах и упрощает доступ к коллекции в самом XAML.
Прежде чем создать коллекцию, нам необходимо подключить пространство имен, для этого напишем следующее MainWindow.xaml:
xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Для этого создадим коллекцию дней в MainWindow.xaml код будет выглядеть следующим образом.
<Window.Resources> <col:ArrayList x:Key="days"> <sys:String>Понедельник</sys:String> <sys:String>Вторник</sys:String> <sys:String>Среда</sys:String> <sys:String>Четверг</sys:String> <sys:String>Пятница</sys:String> <sys:String>Суббота</sys:String> <sys:String>Воскресенье</sys:String> </col:ArrayList> </Window.Resources>
Для этого создаем отдельный блок Window.Resources находящийся в глобальном блоке Window. И помещаем в него содержимое коллекции. Свойство Key задает имя ключа по которым мы сможем найти свою коллекцию в ResourceDictionary. Как это сделать мы рассмотрим код ниже:
public MainWindow()
{
InitializeComponent();
ArrayList arr = (ArrayList) Resources["days"];
string str="";
foreach(var item in arr)
str+=item+"\n";
MessageBox.Show(str);
}
В коде выше нам потребовалось осуществить привидения иначе мы бы получили object, для этого мы осуществили распаковку и привидение к ArrayList
Если мы запустим свою программу, то увидим весь список содержащийся в нашей коллекции:
