我有一个在运行时期间添加或删除的一些用户控件的堆栈面板。 这些元素有一个索引,我分配给他们,当我新他们,我需要保持这些元素排序的索引,所以我wote快速排序函数,根据索引 排序他们,但在交换行堆栈面板中的排序元素WPF
y = items[i]; //y is a temp variable
items[i] = items[j];
我得到
“规定的指标已在使用。断开Visual子级指定索引首先在”
我试着将它们复制到一个临时变量,从集合中删除它们,然后分配使用UIElem中的Insert函数将它们移动到它们的右侧索引entCollection,后来我找
“规定的目视已经是另一个Visual的孩子或CompositionTarget的根”
是否有我需要什么我在想念一个地方克隆元素?
嗯,我可以......但是当我尝试交换两个元素的位置时,仍然会产生相同的结果。我几乎可以使用任何容器......但是我希望能够对它们重新排序,或者不必按照我指定的索引对它们排序 – irco 2010-03-03 17:26:44
首先:使用ItemsControl而不是ListBox:前者用于列出事物不是固有的可选择的。 @irco:从控件外部手动重新定位像这样的元素并不容易以你想要的方式来支持,但如果你可以重新排序源数据(而不是控件),那么你就可以实现相同的结果。 Jobi的建议是正确的:一个CollectionView将根据您指定的索引自动对您的列表进行排序(即使您的列表是一个控件列表!)。 – 2010-03-03 18:00:30
我这样做,创建元素的数据来自一个数据库,他们排序......问题是,新的元素可以随时出现在表上,我不能只是消灭容器的集合,所以当我添加索引小于最后一个元素的新元素,并将其添加到最后,就会出现排序需求。我会尝试ItemsControl – irco 2010-03-03 18:21:27