UWP: DataTemplateSelector and SelectedItem

后端 未结 1 1782
孤独总比滥情好
孤独总比滥情好 2020-12-17 06:18

How can I change the DataTemplate for the SelectedItem of ListView in UWP project? I\'m trying to use the

相关标签:
1条回答
  • 2020-12-17 07:08

    One way is to use RegisterPropertyChangedCallback to monitor the changes of the IsSelected property and then update the ContentTemplateSelector of the ListViewItem manually -

    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;
    }
    
    0 讨论(0)
提交回复
热议问题