2012-03-03 119 views
0

我有一個列表框顯示一些房地產屬性,這些屬性是我存儲在本地數據庫中的對象。列表框使用簡單的數據綁定綁定到這個數據庫。我想實現一個拖放系統以允許用戶相應地重新排列項目。但是,無論我在互聯網上找到哪種實現方式,重新安排都無濟於事。我嘗試了至少5個不同的版本,並且所有這些都允許我拖動對象,顯示虛擬裝飾,甚至顯示列表框將放置的位置,但釋放鼠標按鈕後,該項不會移動。沒有錯誤,沒有任何東西。這是我對我的列表框的代碼,我希望這將是一些防止這種發生的歷史愚蠢的一段代碼:拖放以重新排列列表框內的項目wpf

<ListBox Height="424" 
     Margin="24,80,0,0" 
     x:Name="listBoxProperties" 
     VerticalAlignment="Top" ItemTemplate="{StaticResource propertySummaryTemplate}" 
     IsSynchronizedWithCurrentItem="True"    
     local:DragDropHelper.IsDragSource="True" local:DragDropHelper.IsDropTarget="True" 

     Width="216" BorderThickness="0" Background="{x:Null}" FontFamily="Segoe UI" ScrollViewer.HorizontalScrollBarVisibility="Disabled" UseLayoutRounding="True" HorizontalAlignment="Left" ScrollViewer.VerticalScrollBarVisibility="Disabled" /> 

編輯:我認爲這個問題可能是一些做的事實,實體數據庫綁定到列表框,這意味着該項目的位置需要在數據庫中更改,而不僅僅是列表框本身內的位置。我對這種編碼相當陌生,所以請原諒我缺乏代碼詞彙。

+1

您將需要提供更多的代碼,沒有太多可以繼續。什麼是DragDropHelper,是否可以下載?我假設你已經對一些虛擬數據測試了你的代碼,以消除數據庫的問題。 – Phil 2012-03-06 20:28:47

+1

應用程序運行時的一些測試:更改數據庫中的順序;更改綁定集合中的順序。怎麼了?接下來,獲取DragDrop代碼的源代碼,並在應該觸發的方法中放置斷點。 – 2012-03-07 18:27:13

+0

DragDropHelper具有試圖操縱ListBox綁定到的集合的代碼,以使該放置生效。在這一步中出現了問題,您需要調試DragDropHelper DropTarget_PreviewDrop或DecideDropTarget,以瞭解它不起作用的原因。或者,它可能正在成功修改集合,但您沒有看到更改,因爲它不是ObservableCollection。 – RandomEngy 2012-03-07 19:17:36

回答

0

我在想RandomEngy是正確的。我認爲你需要一個帶有綁定到ListBox的ICollectionView的ObservableCollection。收集視圖允許「更改」所查看的收藏集,而不會干擾原始項目的來源。