2010-12-15 65 views
0

Utilisation de Silverlight 4/MVVM.Silverlight MVVM reliant un ListBox

J'essaie de lier un ViewModel à une zone de liste avec un modèle personnalisé mais les données ne s'affichent pas. J'ai réussi à obtenir des données brutes à afficher si je définis la propriété DisplayMemberPath. Si je supprime cette propriété et que j'essaie de lier les blocs de texte, rien ne s'affiche. Voici le XAML

<ListBox Height='200' 
      HorizontalAlignment='Left' 
      Margin='10,10,0,0' 
      Name='lstForumTopics' 
      VerticalAlignment='Top' 
      Width='200' 
      DataContext='{Binding Path=ForumTopics,Source={StaticResource ForumViewModel}}' 
      ItemsSource='{Binding Path=ForumTopics,Source={StaticResource ForumViewModel}}'> 
     <ListBox.ItemTemplate> 

      <DataTemplate> 
       <StackPanel Orientation='Vertical'> 
        <TextBlock Text='{Binding ForumTopicText,Source={StaticResource ForumViewModel}}'></TextBlock> 
        <TextBlock Text='{Binding PostCount,Source={StaticResource ForumViewModel}}'></TextBlock> 
       </StackPanel> 
      </DataTemplate> 

     </ListBox.ItemTemplate> 
     <ListBox.Background> 
      <LinearGradientBrush EndPoint='0.5,1' 
           StartPoint='0.5,0'> 
       <GradientStop Color='#FFDCE2E5' 
           Offset='1' /> 
       <GradientStop Color='White' 
           Offset='0' /> 
      </LinearGradientBrush> 
     </ListBox.Background> 
    </ListBox> 

Répondre

0

Je crois que vous confondez le moteur de liaison. Si vous allez utiliser un StaticResource essayer ...

DataContext="{Binding Source={StaticResource ForumViewModel}}" 
ItemsSource="{Binding Path=ForumTopics}" 

<TextBlock Text="{Binding Path=ForumTopicText}" /> 
<TextBlock Text="{Binding Path=PostCount}" /> 

Un contrôle a un DataContext qui contient l'objet que les autres propriétés se lient à. ItemsSource a juste besoin de connaître le nom de propriété de l'objet DataContext à lier. Enfin, DataTemplate a un ensemble DataContext défini sur chacun des objets de la source de votre élément. Ils doivent donc uniquement être liés au nom de propriété de l'objet dans votre ItemsSource.

0

Je pense que vous devez lier le ItemsSource du ListBox à un ObservableCollection ou IEnumerable de ForumViewModel s, et pas seulement un seul.

+0

J'ai corrigé le problème - c'était la syntaxe de liaison des blocs de texte – Greg