0

我通过在所需位置(插入方法)删除和添加元素来交换堆栈面板内的两个子项。但是删除和添加元素会导致内存地址问题,并且一旦我访问被交换的元素,应用程序就会崩溃。是有没有其他方法可以实现交换而无需在 StackPanel 中“删除和添加”?

Win8+XAML+C#。

代码片段:

    UIElementCollection children = stack_map.Children;

    int i = children.IndexOf(stack_listView);                                
    StackPanel sp = children[i] as StackPanel;

    int j = children.IndexOf(mapPageInstance);                                
    MapPage mp = children[j] as MapPage;

    stack_map.Children.Remove(sp);
    stack_map.Children.Insert(1, sp);

我想将'sp'从零索引定位到stack_map中的第一个索引。

'mapPageInstance' 是自定义地图类的实例(基本上是地图)

4

1 回答 1

0

要交换上面堆栈面板中的元素,我只需使用以下内容:

stack_map.Children.Remove(stack_listView);
stack_map.Children.Insert(1, stack_listView);

当然,这意味着您的堆栈面板中有多个项目。

如果您继续按名称而不是按索引访问堆栈面板项目,则交换后不应该有任何问题/内存错误

于 2012-11-19T07:34:48.453 回答