我有一个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
属性的值。
问题如下:当我更改ComboBox的值(例如Pop - > Rock)时,相关项目不会在相应的组中移动。为什么?我怎么解决这个问题?
修改
答案 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
}