拖拽删除以重新排列列表框wpf中的项目

时间:2012-03-03 02:33:27

标签: c# wpf drag-and-drop listbox

我有一个列表框,显示一些房地产属性,这些属性是我存储在本地数据库中的对象。使用简单的数据绑定将列表框绑定到此数据库。我想实现一个拖放系统,允许用户相应地重新排列项目。但是,无论我尝试在互联网上找到哪种实现方式,重新排列都无法正常工作。我尝试了至少5个不同的版本,所有这些都允许我拖动对象,显示幽灵装饰,甚至显示listboxitem将落在哪一行,但在释放鼠标按钮后,该项目根本不移动。没有错误,没有任何错误。这是我的列表框的代码,我希望这将是一些愚蠢的代码阻止这种情况发生:

<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 个答案:

答案 0 :(得分:0)

我认为RandomEngy是正确的。我认为你需要一个带有ICollectionView的ObservableCollection绑定到ListBox。集合视图允许“更改”已查看的集合,而不会干扰原始项目源。