代码之家  ›  专栏  ›  技术社区  ›  Muad'Dib

如何使listview在运行时将itemcontrol更改为virtualizingstackpanel

  •  0
  • Muad'Dib  · 技术社区  · 14 年前

    好的,我有一个ListView派生的控件,它可以动态更改分组和项源。当我对滚动条进行分组,使其不显示,然后将itemsource更改为其他ICollectionView时,滚动条不会返回。

    基本问题是,当分组被激活时,listview更改为virtualizedstackpanel,而当分组被取消激活时,listview不会更改回virtualizedstackpanel。

    我不介意在分组时禁用虚拟化——这不是问题。我需要的是一种方法,当我更改itemsource时,使listview重新生成它的itempanel。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Metro Smurf    14 年前

    你能给它添加一个事件处理程序吗? SourceUpdated 事件,然后重置 ItemsPanelTemplate 到在您的 Resources ?

    比如:

    public MyWindow()
    {
       InitializeComponent();
    
       MyListView.SourceUpdated += new EventHandler<DataTransferEventArgs>( OnSourceUpdated );
    }
    
    void OnSourceUpdated( object sender, DataTransferEventArgs e )
    {
       MyListView.ItemsPanel = (ItemsPanelTemplate)Resources["MyItemsPanelTemplate"];
    }
    
    推荐文章