在两个ItemControl之间移动项目时重用可视树

时间:2016-12-28 10:57:50

标签: c# wpf xaml mvvm itemscontrol

我的ViewModel中有两个<div class=wrap> <div id=txt-bar>txt-bar</div> <div id=image><img src=https://placeholdit.imgix.net/~text?txtsize=28&txt=300%C3%97300&w=300&h=300></div> <div id=main-content-area>main-content-area</div> </div>个。两者都是相同的泛型类型。 窗口有两个ObservableCollection,每个ItemsControl绑定在ViewModel自己的ItemsSource上。 两者使用相同的ObservableCollection。这个ItemTemplate是非常复杂的用户控件。 这一切都完全由这本书完成。

在某些情况下,我会将项目从一个集合移动到另一个集合。 UI正确更新。但是,由于控件很复杂,在新ItemTemplate中重新创建时需要大约1-2秒进行渲染。由于这种情况发生在拖放操作上,因此用户不友好。

我想要做的是以某种方式保留源ItemsControl的{​​{1}}的现有实例,并在目标中重复使用它。我不知道是否有可能,我在网上找不到任何关于它的信息。

我相信设置相当简单,但如果需要,我会编写一些简化版本的代码(我无法分享实际代码)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

我想要做的是以某种方式从源ItemsControl保留ItemTemplate的现有实例并在目标中重用它。我不知道是否有可能,我无法在网上找到任何相关信息。

恐怕不是。当您从可视树中断开元素,然后在稍后阶段将其添加回另一个父元素时,将重新呈现构成控件的所有元素。