2012-07-26 12 views
6

Sto cercando di creare un controllo utente elenco di contatti con un pannello dello stack legato ad un ObservableCollection di LoggedInUserAssociare un pannello pila controllo utente a una raccolta osservabile in WPF

controllo utente:

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

utente codice di controllo Dietro

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

     ContactListViewModel clvm = ContactListViewModel.GetInstance(); 

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

     this.DataContext = clvm.Contacts; 
    } 
} 

E il mio ContactListViewModel

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 di classe, nel caso in cui

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

mio pannello pila rimane vuoto! Aiuto!

+0

Stai utilizzando WPF o Silverlight? – Bernard

+0

Ho solo chiesto 6 domande e non ho mai avuto una risposta soddisfacente. Forse questo sarà quello! Inoltre, domanda modificata per menzionare WPF. – Julien

+1

Non hai associato la proprietà ItemsSource di ItemsControl alla proprietà Contact di viewModel. Fai questo, e poi invece di 'this.DataContext = clvm.Contacts;' scrivi 'this.DataContext = clvm; ' – Dante

risposta

7

Non hai vincolato ildel tuo ItemsControl, quindi non ha effettivamente dati. Il vostro contesto dati è la raccolta, quindi è necessario fare solo questo:

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

In alternativa, se invece imposta il contesto dati all'istanza vista del modello (come è consuetudine per MVVM), si dovrebbe fare questo:

<ItemsControl ItemsSource="{Binding Contacts}" ... 
Problemi correlati