2

我有一个绑定到 ObservableCollection 的 ListView 数据。我将 CanReorderItems 属性设置为 true。

但是,当我在列表视图中拖动项目时,它们会保持在原来的位置。

有什么简单的方法可以在列表视图中重新排序?

这是我的代码:页面的ctor:

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>
4

2 回答 2

3

There is a bug in ListView and GridView now (note the question was asked before Windows 8.0 released) and you need to use a 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;
}
于 2012-05-02T23:26:32.217 回答
2

您需要打开 AllowDrop 并将 ItemsSource 设置为 ObservableCollection 或 ICollectionViewSource。

于 2013-07-24T22:25:18.057 回答