我有一个绑定到ObservableCollection的ListView数据。我将CanReorderItems属性设置为true。
但是,当我在列表视图中拖动项目时,它们会保持原来的位置。
有没有简单的方法在列表视图中启用重新排序?
这是我的代码: ctor of page:
public BlankPage()
{
this.InitializeComponent();
ObservableCollection<MyClass> c = new ObservableCollection<MyClass>();
c.Add(new MyClass("a"));
c.Add(new MyClass("b"));
c.Add(new MyClass("c"));
DataContext = c;
}
页面的XAML:
<ListView ItemsSource="{Binding}" CanDragItems="true" CanReorderItems="true" AllowDrop="True"></ListView>
答案 0 :(得分:3)
现在ListView和GridView中有一个bug(注意在Windows 8.0发布之前问过这个问题),你需要使用CollectionViewSource:
public BlankPage()
{
this.InitializeComponent();
ObservableCollection<MyClass> c = new ObservableCollection<MyClass>();
c.Add(new MyClass("a"));
c.Add(new MyClass("b"));
c.Add(new MyClass("c"));
var viewSource = new CollectionViewSource { Source = c };
DataContext = viewSource.View;
}
答案 1 :(得分:2)
您需要启用AllowDrop并将ItemsSource设置为ObservableCollection或ICollectionViewSource。