Динамическое перемещение элемента во время прокрутки

У меня есть ListBox, у которого ItemsPanel - DockPanel и ItemsTemplate - Grid с 2мя строками: в первой TextBlock, во второй еще один горизонтальный список элементов, допустим еще один ListBox или ItemsControl.

    <ListBox ItemsSource="{Binding Path=Collection}"
             ScrollViewer.HorizontalScrollBarVisibility="Auto"
             ScrollViewer.VerticalScrollBarVisibility="Disabled">

        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <DockPanel />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>

        <ListBox.ItemTemplate>
            <DataTemplate>
                <Border>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>

                        <Border Grid.Row="0">
                            <Grid>
                                <TextBlock Margin="3"
                                           x:Name="ThisTextBlockMustMove"
                                           HorizontalAlignment="Left"
                                           VerticalAlignment="Top"
                                           FontSize="24"
                                           Text="{Binding Path=~~}" />
                                <i:Interaction.Behaviors>
                                    <behaviors:UIelementInCenterWhenScrollBehavior Direction="Horizontal" />
                                </i:Interaction.Behaviors>
                                <TextBlock />
                            </Grid>
                        </Border>

                        <ItemsControl Grid.Row="1"
                                      ItemsSource="{Binding Path=Collection2}">

                            <ItemsControl.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <DockPanel />
                                </ItemsPanelTemplate>
                            </ItemsControl.ItemsPanel>

                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <Grid />
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>

                        </ItemsControl>

                    </Grid>
                </Border>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

Расположение TextBlock в первой строке должно всегда находится в центре видимого пространства несмотря на прокрутку, то есть "ездить над внутренним списком" вплоть до его границ в обе стороны.

Я пытался добиться этого используя событие прокрутки первого ListBox'а, каждый раз при этом задавая отступы влево и вправо, но толком ничего не добился, поиск тоже не особо помог, либо я просто не совсем понимаю, что я должен искать..

Собственно был бы благодарен, если бы вы подсказали на что нужно обратить внимание или какие есть способы сделать нужный функционал..


Ответы (0 шт):