C# 重新排列StackPanel中的子级?Win8

C# 重新排列StackPanel中的子级?Win8,c#,windows-8,windows-store-apps,windows-store,C#,Windows 8,Windows Store Apps,Windows Store,我正在通过在所需位置移除和添加元素(插入方法)来交换堆栈面板中的两个子元素。但是移除和添加元素会导致内存地址问题,并且在我访问被交换的元素时应用程序会崩溃。有没有其他方法可以在不“移除和添加”的情况下实现交换在StackPanel中 Win8+XAML+C# 代码段: UIElementCollection children = stack_map.Children; int i = children.IndexOf(stack_listView);

我正在通过在所需位置移除和添加元素(插入方法)来交换堆栈面板中的两个子元素。但是移除和添加元素会导致内存地址问题,并且在我访问被交换的元素时应用程序会崩溃。有没有其他方法可以在不“移除和添加”的情况下实现交换在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”从零索引定位到第一个索引


“mapPageInstance”是一个自定义映射类的实例(基本上是一个映射)

要交换上面stackpanel中的元素,我只需使用以下命令:

stack_map.Children.Remove(stack_listView);
stack_map.Children.Insert(1, stack_listView);
当然,这意味着stackpanel中有多个项目


如果您继续按名称而不是索引访问stackpanel项,则交换后不应出现任何问题/内存错误

您是否可以发布一个显示问题的代码片段?移除和重新插入一个元素不应该导致任何问题。也不能这样工作。崩溃发生在模拟器的触摸模式和表面上,但不在桌面上。奇怪。还有其他建议吗?