2009-07-06 12 views
1

Ich habe eine ListView, die ich mit Elementen aus einer ObservableCollection bevölkern. Alles funktionierte gut, bis ich beschloss, eine zweite Listenansicht hinzuzufügen, um einige der Elemente zu filtern.WPF ListView nicht rendern Vorlagen

Was ich gerade eingerichtet habe, ist, dass die Hauptliste ItemGroup Objekte als gerenderte Objekte hat, wobei das Element, das angezeigt wird, das erste in der Elementgruppe ist. Stellen Sie eine Hashtabelle mit Buckets dar, und das Element, das in der Liste gerendert wird, ist das Element in der Gruppe, die aktuell ist.

Ich habe eine Schaltfläche, die, wenn sie angeklickt wird, zeigt eine andere Listenansicht mit allen Elementen aus diesem "Eimer". Alles, was ich in der neuen Listenansicht bekomme, sind jedoch leere Einträge für die Elemente. Ich sehe ihren Gegenstand gestylt Hintergrund, aber das Zelltemplate scheint leer zu sein.

Meine einzige Vermutung ist, dass es ein Referenzproblem gibt, weil einige der Elemente bereits in einem anderen ItemSource sind.

ich einen Screenshot beigefügt haben:

issue

Hier ist meine 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> 

Hier ist, wie ich Setup die Datenbindung (MatchApiObject ist sind die Objekte für die Bindung in der obigen DataTemplate verwendet):

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

groupViewListView.DataContext = groupViewCollection; 

Und die groupViewListView selbst:

<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: Wenn ich debuggen, die Listenansicht die entsprechenden Elemente in der hat Bindung (zum Beispiel CurrentItem das richtige Objekt zeigt, die für die Bindung verwendet werden sollte), aber für einige Grund, dass sie nicht auftauchen.

+0

Es gibt kein Problem mit der Anzeige der gleichen Daten an mehreren Orten auf verschiedene Arten. Können Sie uns Ihre aktuellen Templates für das zweite ListView etwas genauer vorstellen? Es sieht so aus, als ob die ItemsSource zumindest aufgefüllt wird, da ein Hintergrund vorhanden ist, so dass das Problem wahrscheinlich die Datenbindung ist. – rmoore

+0

müssen einige Code sehen –

+0

Code hinzugefügt, danke Jungs. – Max

Antwort

0

Ich bin dumm. Es scheint, dass die Breite = "Auto" in der Spalte mit meiner Hauptdatenvorlage nicht über den ganzen Weg verteilt. Einstellung Breite = 100 zeigte das Teil. Vielleicht ist es der Elternteil, der sich nicht über den ganzen Weg ausbreitet.