2009-07-06 8 views
1

J'ai un ListView que je remplis avec des éléments d'un ObservableCollection. Tout fonctionnait bien jusqu'à ce que je décide d'ajouter une deuxième vue de liste pour filtrer certains des éléments. Ce que j'ai configuré en ce moment, c'est que la vue listview principale a ItemGroup objets comme éléments rendus, avec l'élément affiché étant le premier dans le groupe d'articles. Imaginez une hashtable avec des buckets et l'élément affiché dans la liste est l'élément du groupe le plus actuel.WPF ListView ne pas afficher les modèles

J'ai un bouton qui, une fois cliqué, montrera une autre liste avec tous les articles de ce "seau". Cependant, tout ce que je reçois dans la nouvelle liste est une entrée vide pour les éléments. Je vois leur arrière-plan de style élément, mais le celltemplate semble être vide.

Ma seule supposition est qu'il y a un problème de référence parce que certains des éléments sont déjà dans un autre ItemSource.

Je joins une capture d'écran:

issue

Voici mon DataTemplate:

<DataTemplate x:Key="ResultListGroupViewCellTemplate"> 
     <!--<DockPanel>--> 
     <Grid Width="Auto" Margin="0,5,5,5" ShowGridLines="False"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="30"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition /> 
      </Grid.RowDefinitions> 

      <StackPanel Grid.Column="0"> 
       <Image Margin="2" Source="{Binding Path=StrengthImage}" 
        Height="20" Width="20" HorizontalAlignment="Left" /> 
       <TextBlock Text="{Binding Path=AddedDate}" Margin="0,3,0,0" 
           TextTrimming="CharacterEllipsis" VerticalAlignment="Center" FontFamily="Tahoma" FontSize="10" FontStyle="Italic" HorizontalAlignment="Left" /> 
      </StackPanel> 

     </Grid> 


     <!--</DockPanel>--> 
    </DataTemplate> 

Voici comment je configurer la liaison de données (MatchApiObject de sont les objets utilisés pour la liaison dans le DataTemplate ci-dessus):

groupViewCollection = new ObservableCollection<MatchApiObject>(m.GroupList.OrderBy(mi => mi.AddedDate)); 

groupViewListView.DataContext = groupViewCollection; 

Et le groupViewListView lui-même:

<ListView Name="groupViewListView" Foreground="#FF333333" 
       ItemContainerStyle="{StaticResource ListViewMatchItemStyleNotSelected}" 
       SelectionMode="Single" 
       ItemsSource="{Binding}" 
       BorderThickness="0" 
       SelectionChanged="contactsList_SelectionChanged" 
       AlternationCount="2" 
       HorizontalContentAlignment="Stretch" 
       ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
       > 
    <ListView.View> 
     <GridView x:Name="groupViewListViewGridView" AllowsColumnReorder="False"> 
      <GridView.ColumnHeaderContainerStyle> 
       <Style TargetType="GridViewColumnHeader"> 
        <Setter Property="Visibility" Value="Collapsed" /> 
       </Style> 
      </GridView.ColumnHeaderContainerStyle> 
      <GridViewColumn CellTemplate="{StaticResource StrengthValMatchColumnCellTemplate}" Width="0" Header="Strength" /> 
      <GridViewColumn CellTemplate="{StaticResource DateMatchColumnCellTemplate}" Width="0" Header="Date" /> 

      <!--<GridViewColumn CellTemplateSelector="{StaticResource myMatchListItemTemplateSelector}" Width="Auto" Header="Result" />--> 
      <GridViewColumn CellTemplate="{StaticResource ResultListGroupViewCellTemplate}" Width="Auto" Header="Result" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

EDIT: Quand je déboguer, le listview a les éléments appropriés dans la fixation (par exemple, CurrentItem montre l'objet propre qui doit être utilisé pour la liaison), mais pour certains raison pour laquelle ils ne se présentent pas.

+0

Il n'y a aucun problème à afficher les mêmes données à plusieurs endroits de plusieurs façons. Pouvez-vous poster ou nous donner plus de détails sur vos modèles actuels pour la deuxième ListView? Il semble que ItemsSource soit au moins peuplé car il y a un arrière-plan, donc le problème est probablement la liaison de données. – rmoore

+0

devra voir du code –

+0

Ajouté du code, merci les gars. – Max

Répondre

0

Je suis stupide. Il semble que la largeur = "Auto" sur la colonne avec mon modèle de données principal ne s'étend pas tout au long. La largeur de réglage = 100 a montré la pièce. Peut-être que c'est le parent qui ne s'étend pas tout le chemin.

Questions connexes