Ich bin ein 10 Universal-App gewinnen zu machen, und ich habe zwei Arrays von Objekten:UWP Schalter Datenvorlage - rebinding ItemSource
private ObservableCollection<Song> Songs;
private ObservableCollection<JonPlaylist> Playlists;
und eine Listenansicht in ihnen die Daten anzuzeigen:
<Page.Resources>
<DataTemplate x:DataType="data:Song" x:Key="SongDataTemplate">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Name="ListSongName" Text="{x:Bind Title}" VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
<TextBlock Name="ListArtist" Text="{x:Bind Artist}" VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
</StackPanel>
</StackPanel>
</DataTemplate>
<DataTemplate x:DataType="data:JonPlaylist" x:Key="PlaylistDataTemplate">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Name="ListSongName" Text="{x:Bind Title}" VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</Page.Resources>
Listenansicht:
<ListView Name="SongListView" ItemsSource="{x:Bind Songs}" IsItemClickEnabled="True"
ItemClick="SongListView_ItemClick"
ItemTemplate="{StaticResource SongDataTemplate}" />
Das Problem ist, dass ich zwischen den beiden Arrays/Sammlungen wechseln können, wollen die sind verschiedener Datentypen.
Ich habe versucht, dies mit den Datenvorlagen als Seite resourses zu erreichen, und die listView.ItemSource und listView.ItemTemplate rebinding:
private void SwitchViewButton_Click(object sender, RoutedEventArgs e)
{
SongListView.ItemsSource = Playlists[0].GetType();
SongListView.ItemTemplate = this.Resources.ElementAt(1);
}
Ich weiß nicht, aber wenn dies funktionieren wird. Wird es besser sein, Benutzersteuerelemente und einen visuellen Zustandsverwalter zu verwenden?
Danke, das Ändern des Sichtbarkeitswerts reicht jetzt aus. – Jon
Ich erhalte eine nullReferenceException, wenn ich versuche, die Sichtbarkeit von defered Objekten zu manipulieren. Muss ich den Wert der Ladestrategie ändern, bevor ich den Sichtbarkeitswert manipulieren kann? Denken Sie daran, dass ich im Moment auch keinen Staatsmanager verwende. – Jon
Edit * Ich kann auf die Objekte zugreifen, wenn ich sie durch this.FindName finde, obwohl dies sehr hässlich erscheint, da ich jedes Mal eine neue Variable erfinden muss. könnte eine sauberere Lösung mit dem visuellen Zustandsmanager gefunden werden – Jon