2012-07-26 17 views
6

Próbuję utworzyć listę kontaktów kontrolę użytkownika z panelu stosu przyłączonej do ObservableCollection z LoggedInUserBind panel stosu kontroli użytkownika do zaobserwowania kolekcji w WPF

Kontroli użytkownika:

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

użytkownika Kod kontrolny Za

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

     ContactListViewModel clvm = ContactListViewModel.GetInstance(); 

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

     this.DataContext = clvm.Contacts; 
    } 
} 

A moja 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 klasy, na wszelki wypadek

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

Mój panel stos pozostaje pusty! Wsparcie!

+0

Czy używasz WPF lub Silverlight? – Bernard

+0

Zadałem tylko 6 pytań i nigdy nie otrzymałem satysfakcjonującej odpowiedzi. Może to będzie to! Zmieniono również pytanie o WPF. – Julien

+1

Nie powiązałeś właściwości ItemsSource ItemsControl z właściwością Contact obiektu viewModel. Zrób to, a następnie zamiast 'this.DataContext = clvm.Contacts;' napisz 'this.DataContext = clvm; ' – Dante

Odpowiedz

7

Nie jesteś związany ItemsSource Twojego ItemsControl, więc nie ma on danych. Twój kontekst danych jest gromadzenie, więc trzeba to zrobić tylko:

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

Ewentualnie, jeśli zamiast ustawić kontekstu danych do instancji widoku modelu (jak to ma w zwyczaju, MVVM), by to zrobić:

<ItemsControl ItemsSource="{Binding Contacts}" ... 
Powiązane problemy