2

我有一个ListView, 实现 a GridViewas ,其中项目根据由 a 表示的字段View分组(使用) 。ExpanderComboBox

我的ItemsSourceof myListViewObservableCollectionof 绑定:

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财产的价值由ComboBox.

在此处输入图像描述

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

编辑:

MainWindow.xaml
MainWindow.xaml.cs

4

2 回答 2

2

当我编辑ComboBox我必须刷新ItemsSource我的ListView

ICollectionView view = CollectionViewSource.GetDefaultView(MyListView.ItemsSource);
view.Refresh();
于 2012-09-17T09:40:30.383 回答
0

添加IsSynchronizedWithCurrentItem="True"组合框 xaml 属性

像这样在你的视图模型上写一个属性

    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
    }
于 2012-09-16T17:47:31.873 回答