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:
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.
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
müssen einige Code sehen –
Code hinzugefügt, danke Jungs. – Max