在WPF应用中,我可以使用this等代码将UserControl
从ContentControl
移到另一个{<3}}:
myContentControl1.Content = null;
myContentControl2.Content = myUserControl;
问题是被移动的UserControl
是一个相当沉重的(由很多较小的控件组成)。因此,上述操作需要花费大量时间,几乎与我最初加载UserControl
时一样长。似乎UserControl
中的每个元素都要通过处理移动到另一个ContentControl
下。
是否有一个更有效且更快的方法 将UserControl
置于另一个父级(在我的情况下为ContentControl
)作为其子级(每次都不需要UI线程处理所有元素)? (动态地,在代码隐藏中)
答案 0 :(得分:2)
不要在两个ContentControl
之间切换UserControl
的内容,而是将UserControl
放入Grid
并切换Visibility
Visible
。在显示当前数据的同时,在后台更新另一个不可见的数据。完成更新后,将控件的可见性从Hidden
切换为Collapsed
,反之亦然。不要使用Grid
,因为这会强制新的布局周期。
将两者放在Row
中而不指定Column
或{{1}}会使它们彼此叠加。