UWP:DataTemplateSelector和SelectedItem

如何在UWP项目中更改ListViewSelectedItemDataTemplate ? 我正在尝试使用DataTemplateSelector,但问题是SelectTemplateCore只被调用一次。

这是我尝试过的:

MyTemplateSelector类

public class MyTemplateSelector : DataTemplateSelector { public DataTemplate DefaultTemplate { get; set; } public DataTemplate SelectedItemTemplate { get; set; } protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { var cont = container as ListViewItem; if (cont != null) { FrameworkElement elemnt = container as FrameworkElement; if (cont.IsSelected) { return SelectedItemTemplate; } else { return DefaultTemplate; } } else return DefaultTemplate; } } 

页面的资源

                        

列表显示

   

一种方法是使用RegisterPropertyChangedCallback监视IsSelected属性的更改,然后手动更新ListViewItemContentTemplateSelector

 protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { if (container is ListViewItem cont) { if (cont.Tag != null && long.TryParse(cont.Tag.ToString(), out var token)) { cont.UnregisterPropertyChangedCallback(ListViewItem.IsSelectedProperty, token); } cont.Tag = cont.RegisterPropertyChangedCallback(ListViewItem.IsSelectedProperty, (s, e) => { cont.ContentTemplateSelector = null; cont.ContentTemplateSelector = this; }); if (cont.IsSelected) { return SelectedItemTemplate; } return DefaultTemplate; } return DefaultTemplate; }