Как я могу использовать класс коллекции в качестве статического ресурса в Silverlight

У меня есть простой класс с именем Customer с двумя свойствами.
public Name {get;set;}
public LastName {get;set}

Затем я создал класс коллекции с именем CustomerList только с одним общедоступным свойством с именем Customers.

public class CustomerList
{
    public List<Customer> Customers { get; set; }

    public CustomerList()
    {
        Customers = new List<Customer>();
        Customers.Add(new Customer() { Name = "Foo", LastName = "Bar" });
        Customers.Add(new Customer() { Name = "Foo1", LastName = "Bar1" });
    }
}

Теперь я хочу использовать этот класс в качестве статического ресурса в XAML.

  <UserControl.Resources> 
  <customers:CustomerList x:Key="CustomersKey">
  </UserControl.Resources>

а затем использовать его в ListBox

 <ListBox x:Name="lvTemplate" ItemsSource="{Binding Source={StaticResource CustomersKey}}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBox Text="{Binding Name}"/>
                    <TextBox Text="{Binding LastName}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

если я устанавливаю ItemsSource в скрытом коде, после создания экземпляра класса все работает нормально. Если я попытаюсь установить его из XAML и статического ресурса, ничего не произойдет. даже если я использую {Binding Path=Customer.Name} или {Binding Path=Name}.

Явно что-то упускаю...


person Panagiotis Lefas    schedule 28.02.2011    source источник


Ответы (1)


Поскольку CustomerList на самом деле не является списком элементов (не реализует IEnumerable), вам необходимо указать, какое свойство внутри объекта вы хотите использовать в качестве ItemsSource.

<ListBox ItemsSource="{Binding Path=Customers, Source={StaticResource CustomersKey}}">
person foson    schedule 28.02.2011
comment
Ой! Я пытался использовать путь внутри DataTemplate... Это была моя ошибка. Спасибо за ответ. - person Panagiotis Lefas; 02.03.2011