我正在制作一个win 10通用应用程序,我有两个对象数组:
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 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);
}
但我不知道这是否有效。利用用户控件和可视状态管理器会更好吗?
答案 0 :(得分:0)
为什么不使用两个列表视图控件并根据需要显示/隐藏它们,而不是尝试重新绑定/重新模板单个列表视图?
我非常建议使用VisualStateManager来执行此操作并使用x:DeferLoadStrategy="Lazy"来解决性能问题。
如果您需要有关上述内容的更多信息,请与我们联系。