Список в Resource.XAML и доступ в ViewModel

Как создать список в resources.xaml (я буду использовать его в качестве источника элементов для моего списка) и как я могу получить к нему доступ во ViewModel? Спасибо

2 ответа

Решение

Это может помочь: Silverlight: Объявление коллекции данных в XAML?

Затем вы можете получить к нему доступ, используя свойство Resources элемента управления, в котором вы объявляете коллекцию.

РЕДАКТИРОВАТЬ Например:

Вам нужно объявить новый тип коллекции, так как вы не можете объявить универсальный тип в XAML:

using System.Collections.Generic;

namespace YourNamepace
{
    public class Genders : List<string>
    {
    }
}

Затем вы объявляете список в XAML после добавления необходимых пространств имен:

xmlns:local="clr-namespace:YourNamespace"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
...
<Window.Resources>
    <local:Genders x:Key="AvailableGenders">
        <sys:String>Female</sys:String>
        <sys:String>Male</sys:String>
    </local:Genders>
</Window.Resources>

Конечно, вы можете объявить это с более сложными структурами данных внутри. Затем используйте это как ItemsSource вашего ListBox:

<ListBox ItemsSource="{Binding Source={StaticResource AvailableGenders}}"/>

Это работает, я только что проверил:-)

Добавляя к ответу @JerimyGilbert, вы можете заполнить список из класса и использовать его непосредственно из XAML следующим образом:

      using System.Collections.Generic;

namespace YourNamepace
{
    public class Genders : List<string>
    {
       public Genders()
       {
          Add("Male");
          Add("Female");
       }
    }
}

<Window.Resources>
    <local:Genders x:Key="Genders"/>
</Window.Resources>
<ListBox ItemsSource={Binding Source={StaticReource Genders}}/>
Другие вопросы по тегам