2012-05-02 47 views
2

我有一個ListView數據綁定到一個ObservableCollection。我將CanReorderItems屬性設置爲true。有沒有簡單的方法來重新排列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> 

回答

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; 
} 
+0

菲利普,謝謝你的回覆。它不會重新排序項目。還有什麼我應該做的? (聽一個事件?) – user380719

+0

你有什麼東西在你的項目?如果你有按鈕 - 它們可能不起作用,但你可以用像ListItemButton這樣的自定義按鈕實現來代替它們 - http://winrtxamltoolkit.codeplex.com/SourceControl/changeset/view/13059#246007 –

+0

我沒有自定義項目,請參閱上面的示例。 – user380719

2

您需要打開AllowDrop並讓您的ItemsSource成爲ObservableCollection或ICollectionViewSource。

相關問題