xaml - 有没有一种简单的方法可以对 ListView 中的项目进行重新排序

标签 xaml windows-runtime winrt-xaml

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

但是,当我在 ListView 中拖动项目时,它们会保留在原始位置。

是否有任何简单的方法可以在 ListView 中启用重新排序?

这是我的代码: 页面作者:

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>

最佳答案

有一个bug现在在 ListView 和 GridView 中(注意这个问题是在 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;
}

关于xaml - 有没有一种简单的方法可以对 ListView 中的项目进行重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10420947/

相关文章:

c# - Silverlight 元素绑定(bind)不起作用

c# - 在 XAML 中设置 DataContext

c# - 如何从 Double 转换为 GridLength? C#

javascript - 如何将标签对齐到 div 控件的顶部中间并在其周围绘制一个矩形?

visual-studio-2012 - C++/CX XAML 图像可见性

c# - 包装面板项目仅填充页面的一半

c# - 如何在 ListView 中访问 WebView 的 NavigateToString 属性

c# - 如何在 ViewModel 中获取控件的高度

binding - 如何在 WinRT 中的 ItemContainerStyle 中进行绑定(bind)?

c# - Windows 应用商店应用程序用户界面更新