Я делаю выиграть 10 универсальное приложение, и у меня есть два массива объектов:UWP переключателя - подмена ItemSource
private ObservableCollection<Song> Songs;
private ObservableCollection<JonPlaylist> Playlists;
и ListView для отображения данных внутри них:
<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>
ListView:
<ListView Name="SongListView" ItemsSource="{x:Bind Songs}" IsItemClickEnabled="True"
ItemClick="SongListView_ItemClick"
ItemTemplate="{StaticResource SongDataTemplate}" />
проблема заключается в том, что я хочу, чтобы иметь возможность переключаться между двумя массивами/коллекций, которые различных типов данных.
Я пытался сделать это с шаблонами данных как страницы-ресурсов, а также подменой на listView.ItemSource и listView.ItemTemplate:
private void SwitchViewButton_Click(object sender, RoutedEventArgs e)
{
SongListView.ItemsSource = Playlists[0].GetType();
SongListView.ItemTemplate = this.Resources.ElementAt(1);
}
Однако я не знаю, если это будет работать. Будет ли лучше использовать пользовательские элементы управления и визуальный менеджер состояний?
Спасибо, теперь измените значение видимости. – Jon
Я получаю исключение nullReferenceException всякий раз, когда я пытаюсь манипулировать видимостью отложенных объектов. Мне нужно изменить значение loadstrategy, прежде чем я смогу манипулировать значением видимости? Имейте в виду, что я также не использую статистиков. – Jon
Редактировать * Кажется, я могу получить доступ к объектам, если найду их через this.FindName, хотя это кажется очень уродливым, поскольку я должен каждый раз вводить новую переменную. может быть найдено более чистое решение с визуальным менеджером состояния. – Jon