问题(发生在绑定到ItemsSource的切换列表上--当带有SharedSizeGroup的行消失片刻时):

所以我有一个Grid和IsSharedSizeScope="True"。我正在构建的控件是一个日历/调度程序控件。
我有一个TimeRuler控件,需要与标题对齐(下面屏幕截图中的橙色矩形)。我用SharedSizeGroup来做这个。问题是SharedSizeGroup在ItemsControl生成的项中,这导致了一些奇怪的延迟,就像您在gif中看到的那样。
是否在 ItemsContainerGenerator呈现第一项或完成加载后使其重新呈现ItemsContainerGenerator?
导致问题的片段:
<!-- to even time ruler out -->
<Grid
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="0,-1,0,0">
<Grid.RowDefinitions>
<!-- both SuperHeader and LocationHeader are rendered later and this is causing this weird flickering/jumping -->
<RowDefinition SharedSizeGroup="SuperHeader" />
<RowDefinition SharedSizeGroup="LocationHeader" />
</Grid.RowDefinitions>
</Grid>视觉树或多或少:

这可以解决这些高度固定和不使用SharedSizeGroup,但它将不再那么灵活.
或者确保ItemsControl永远不会是空的,例如使用ObservableCollection,添加新项,然后删除旧项。这样,RowDefinition和SharedSizeGroup总是出现在视觉树中.
很烦人..。我认为在这种情况下甚至不可能使用SharedSizeGroup。
发布于 2019-06-05 12:44:38
替换绑定到ItemsSource的集合从来没有我想要的那么快。也没有清理和添加项目。它使一切都重新渲染,而且速度慢得令人痛苦。
由于找不到更好的解决方案,我只添加(填充)一次日项目,然后使用items[i]语法替换它们。这样,每次您想要显示不同日期范围时,就不必完全重新呈现UI了。
https://stackoverflow.com/questions/56440043
复制相似问题