Модернизация и плавная прокрутка ScrollViewer

113
06 февраля 2021, 04:00

Столкнулся с такой проблемой. Есть в xaml такая разметка:

<Grid Background="#2c2c2c">
        <ScrollViewer x:Name="scrollViewer" CanContentScroll="True">
            <StackPanel Background="#FF1F1E1E" x:Name="ScrollPanel">
                <ListBox x:Name="favorites" Width="300" Background="#FF1F1E1E">
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 1" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 2" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 3" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 4" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 5" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 6" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 7" Foreground="White"/>
                    </ListBoxItem>
                </ListBox>
                <ListBox x:Name="library" Width="300" Background="#FF1F1E1E" Margin="0 20 0 0">
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 1" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 2" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 3" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 4" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 5" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 6" Foreground="White"/>
                    </ListBoxItem>
                    <ListBoxItem Height="40" Background="#FF191919">
                        <TextBlock Text="Item 7" Foreground="White"/>
                    </ListBoxItem>
                </ListBox>
            </StackPanel>
        </ScrollViewer>
    </Grid>

Проблема заключается в том, что я хочу сделать плавную прокрутку (как, например, в браузерах). Но как видите, если обернуть всю мою конструкцию в SrcollViewer, то получится это:

Как видите вместо хорошего скроллбара, который бы крутил по пикселям всю длину StackPanel получается массивный скроллбар, который за одну прокрутку перемещает фокус в другой конец панели. Так вот, есть ли какой-нибудь способ сделать так, чтобы он перемещался плавно? Еще было бы неплохо узнать, как сделать так, чтобы при прокрутке колесом мыши в области, которая обернута в ScrollViewer происходил процесс прокрутки этого содержимого? (в обычной ситуации прокручивается только если навести на сам скроллбар и дальше уже колесом мыши)

Answer 1

Известная проблема.

CanContentScroll="False"

Насчёт прокрутки по элементам: ListBox сам внутри держит ScrollViewer, поэтому перехватывает прокрутку. Замени оба ListBox на ItemsControl (остальное можно даже не менять).

READ ALSO
Не меняется текст UILabel

Не меняется текст UILabel

У меня есть некоторый UILabel titleLabel, который инициализируется в конструкторе, Frame же указывается в LayoutSubview

110
ArrayList to string с пробелами

ArrayList to string с пробелами

Как сделать что бы после каждого слова был пробел но не после последнего? и еще пользуясь случаям хочу спросить касательно строк

93
Mysql помощь при удалении запеси

Mysql помощь при удалении запеси

Как исправить ошибку, чтобы удаление проходило?

106
Передать значение поля в переменную по id

Передать значение поля в переменную по id

Нужно передать в переменную $Summm1 количество товаров данного заказа ('quantity'),

107