2012-07-26 28 views
6

Estoy tratando de crear un control de usuario lista de contactos con un panel pila unido a un ObservableCollection de LoggedInUserEnlazar un panel de pila de control de usuario a una colección observable en WPF

de Control de Usuario:

<UserControl.Content> 
    <Grid> 
     <Border BorderBrush="LightBlue" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8" Height="350" HorizontalAlignment="Left" VerticalAlignment="Top" Width="290"> 
      <ItemsControl x:Name="tStack" Grid.Column="0"> 
       <ItemsControl.ItemsPanel> 
        <ItemsPanelTemplate> 
         <StackPanel Orientation="Horizontal"/> 
        </ItemsPanelTemplate> 
       </ItemsControl.ItemsPanel> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <Button Height="30" Content="{Binding Username}"/> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 
     </Border> 
    </Grid> 
</UserControl.Content> 

usuario Código de Control Detrás

public partial class ContactList : UserControl 
{ 
    public ContactList() 
    { 
     InitializeComponent(); 

     ContactListViewModel clvm = ContactListViewModel.GetInstance(); 

     clvm.Contacts.Add(new LoggedInUser("test", "123")); 

     this.DataContext = clvm.Contacts; 
    } 
} 

Y mi ContactListViewModel

clase
class ContactListViewModel 
{ 
    private static ContactListViewModel instance; 

    public ObservableCollection<LoggedInUser> Contacts = new ObservableCollection<LoggedInUser>(); 

    public static ContactListViewModel GetInstance() 
    { 
     if (instance == null) 
      instance = new ContactListViewModel(); 

     return instance; 
    } 
} 

LoggedInUser, por si acaso

public class LoggedInUser 
{ 
    private string username; 
    public string Username 
    { 
     get { return username; } 
     set { username = value; } 
    } 
} 

Mi panel de pila permanece vacío! ¡Ayuda!

+0

¿Está utilizando WPF o Silverlight? – Bernard

+0

Solo he hecho 6 preguntas y nunca obtuve una respuesta satisfactoria. ¡Quizás este sea el indicado! Además, la pregunta editada para mencionar WPF. – Julien

+1

No ha vinculado la propiedad ItemsSource de ItemsControl a la propiedad de contacto de viewModel. Haga esto, y luego en lugar de 'this.DataContext = clvm.Contacts;' write 'this.DataContext = clvm; ' – Dante

Respuesta

7

No ha vinculado el ItemsSource de su ItemsControl, por lo que efectivamente no tiene datos. Su contexto de datos es la colección, por lo que sólo necesita hacer esto:

<ItemsControl ItemsSource="{Binding}" ... 

Alternativamente, si en lugar de configurar el contexto de datos a la instancia de vista del modelo (como es habitual para MVVM), que podría hacer esto:

<ItemsControl ItemsSource="{Binding Contacts}" ... 
Cuestiones relacionadas