2011-02-28 9 views
5

Tengo una clase simple llamada Customer con 2 propiedades.
public Name {get;set;}
public LastName {get;set}

Entonces hice una clase de colección llamada CustomerList con sólo uno Clientes propiedad pública denominada¿Cómo puedo usar una clase de colección como un recurso estático en silverlight

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" }); 
    } 
} 

Ahora quiero utilizar esta clase como un resouce estática en XAML.

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

y luego usarlo en un cuadro de lista

<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> 

si fijo el ItemsSource en behide código, después de crear instancias de la clase, todos funcionan bien. Si trato de configurarlo desde XAML y el recurso estático, nada sucede. ni siquiera si uso {Binding Path=Customer.Name} o {Binding Path=Name}.

Claramente he perdido algo ...

Respuesta

5

Desde el CustomerList no es en realidad la lista de elementos (no implementa IEnumerable), es necesario especificar qué propiedad dentro del objeto que desea utilizar como ItemsSource.

<ListBox ItemsSource="{Binding Path=Customers, Source={StaticResource CustomersKey}}"> 
+0

Oh! Estaba intentando usar el camino dentro de DataTemplate ... Este fue mi error. Gracias por la respuesta. –

Cuestiones relacionadas