我有一个列表框,显示一些房地产属性,这些属性是我存储在本地数据库中的对象。使用简单的数据绑定将列表框绑定到此数据库。我想实现一个拖放系统,允许用户相应地重新排列项目。但是,无论我尝试在互联网上找到哪种实现方式,重新排列都无法正常工作。我尝试了至少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" />
编辑:我认为问题可能与实体数据库绑定到列表框这一事实有关,这意味着需要在数据库中更改项目的位置,而不仅仅是列表框本身内的位置。我对这种编码很新,所以请原谅我缺乏代码词汇。
答案 0 :(得分:0)
我认为RandomEngy是正确的。我认为你需要一个带有ICollectionView的ObservableCollection绑定到ListBox。集合视图允许“更改”已查看的集合,而不会干扰原始项目源。