刷新ListView分组的项目

时间:2012-09-16 17:21:39

标签: c# wpf listview refresh grouping

我有一个ListView,它将GridView实现为View,其中的项目根据{Expander提供的字段进行分组(使用ComboBox) 1}}。

ItemsSource的{​​{1}}与ListView绑定:

ObservableCollection

public class data { public string Name { get; set; } public int Age { get; set; } public bool Graduate { get; set; } public eMusic Music { get; set; } } public enum eMusic { Rock, Pop, Classic } 显示Music属性的值。

enter image description here

问题如下:当我更改ComboBox的值(例如Pop - > Rock)时,相关项目不会在相应的组中移动。为什么?我怎么解决这个问题?

修改

MainWindow.xaml
MainWindow.xaml.cs

2 个答案:

答案 0 :(得分:2)

当我修改ComboBox时,我必须刷新ItemsSource的{​​{1}}:

ListView

答案 1 :(得分:0)

在combobox xaml属性中添加IsSynchronizedWithCurrentItem="True" 在你的viewmodel上写一个属性,就像这样

    private ICollectionView _musicsView;
    public ObservableCollection<Music> Musics{ get; private set; }

    public YourViewModel()
    { 
       Musics= new ObservableCollection<Music>();
       _music= CollectionViewSource.GetDefaultView(AvaibleLanguages);
       _music.CurrentChanged += new EventHandler(OnCurrentChanged);
    }

    public ICollectionView MusicsView
    {
       get
       {
          return _musicsView;
       } 
    }

    void OnCurrentChanged(object sender, EventArgs e)
    {
        YourObject current = _musicsView.CurrentItem as YourItem;
//do: what you want
    }