Проблема (происходит при переключении списка, привязанного к ItemsSource - когда строки с SharedSizeGroup на мгновение исчезают):
Итак, у меня есть Grid
с IsSharedSizeScope="True"
.Элемент управления, который я создаю, является элементом управления календаря / планировщика.
У меня есть TimeRuler
элемент управления, который мне нужно выровнять по заголовкам (оранжевый прямоугольник на скриншоте ниже).Я использую SharedSizeGroup для этого.Проблема в том, что SharedSizeGroup
находится внутри сгенерированных элементов ItemsControl
, и это вызывает некоторую странную задержку, как вы можете видеть в gif.
Есть ли в любом случае, чтобы сделать это повторно после * 1018ItemsContainerGenerator отображает первый элемент или заканчивает загрузку?
Фрагмент, вызывающий проблему:
<!-- 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.