有没有一种简单的方法来重新排序ListView中的项目

时间:2012-05-02 20:13:03

标签: xaml windows-runtime winrt-xaml

我有一个绑定到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>

2 个答案:

答案 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。