我有一个上移下移的操作,操作Border对象交换位置Border包含在一个WrapPanel中Border temp1 = (Border)wrapPanel_Main.Children[0];
Border temp2 = (Border)wrapPanel_Main.Children[1];
wrapPanel_Main.Children[0] = temp2;
wrapPanel_Main.Children[1] = temp1;原来想用这种方式交换位置,但是在第三个报出【指定的索引已经在使用。请先在指定的索引处断开 Visual 子级】的异常所以我想,WPF里有没有什么对象克隆或传值的方式,C#里是用clone方法(似乎是这个单词),但是在WPF里的对象没有这个方法,求大神指教啊!

解决方案 »

  1.   

    先把元素从视觉树上拿下来,再加上去。
    WPF必须知道的基础之一,视觉树和逻辑树这两颗树。
      

  2.   

    Border temp1 = (Border)wrapPanel_Main.Children[1];
    wrapPanel_Main.Children.RemoveAt(1);
    wrapPanel_Main.Children.Insert(0,temp1);
      

  3.   

    是2L的那个意思么,先删掉再加上,总感觉WPF比C#要复杂好多啊,很多功能要写好多代码..
      

  4.   

    对于一个C#和WPF各是什么含义,二者是什么关系都不知道的人来说,确实很复杂。
      

  5.   

    是指WINFORM?那应该不会吧。WPF在UI部分的呈现靠XAML就能完成以前WINFORM在后台写很多代码才能实现的效果。至于逻辑处理啥的基本都一样。
      

  6.   


    我当初学的时候就是光做winform,不怎么理asp,就是因为对HTML这种界面控制感到麻烦,Winform虽然后台处理可能多点,但是你拽一个控件想放哪就放哪,不用各种调整位置,做一个ASP项目,光调整位置就花去好多时间..
      

  7.   

    WINFORM能直接交换?也要先移除的,winform每一个control都有一个parent,也是树的关系。你没体会到WINFOEM布局样式很麻烦吗,UI和代码逻辑混在一起,布局样式逻辑处理都要靠C#代码,很混乱。WPF这种方式就像是HTML+css+js,HTML=XAML,CSS=XMAL中的Style,js=c#。
    布局用HTML,样式用CSS,逻辑处理用JS,多清晰了
      

  8.   

    我比较擅长写代码,用HTML布局什么的...
      

  9.   

    XAML+C#的组合方式挺符合你的,UI交给美工,你负责代码逻辑,无不干扰。微软很多的技术都在用这种组合,WPF最早引入的,workflow、silverlight,windwos phone,windows8 store。
    包括安卓的开发,也是分离UI和代码(类似XAML的xml标记语言+java)。我是觉得好处多多,唯一的问题应该是这种“xml”界面解析渲染的性能问题了,不过这点优化的挺不错的,牺牲这点性能,能带来开发上的更好的协作,以及这种"xml"可以做出来非常炫丽的页面效果。总的来说利多弊少。何乐而不为呢。慢慢接受吧LZ。