powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Скроллинг listbox'а внутри другого listbox
1 сообщений из 1, страница 1 из 1
Скроллинг listbox'а внутри другого listbox
    #38157956
aushakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется listbox (обычный, с вертикальной ориентацией), каждый элемент которого представляет собой listbox с горизонтальной ориентацией элементов.
Вот как это выглядит:

Как видно, скроллинг осуществляется из внешнего listbox и отсутствует во внутреннем.
Код:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<Window.Resources>
    <HierarchicalDataTemplate x:Key="ItemTemplateSchedule">
        <ListBox>
            <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal" />
                    </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBoxItem>My-Very-Long-Item-Nimber-1___</ListBoxItem>
            <ListBoxItem>My-Very-Long-Item-Nimber-2___</ListBoxItem>
            <ListBoxItem>My-Very-Long-Item-Nimber-3___</ListBoxItem>
            <ListBoxItem>My-Very-Long-Item-Nimber-4___</ListBoxItem>
            <ListBoxItem>My-Very-Long-Item-Nimber-5___</ListBoxItem>
        </ListBox>
    </HierarchicalDataTemplate>
</Window.Resources>

<Grid>
    <ListBox ItemTemplate="{StaticResource ItemTemplateSchedule}" >
        >
    </ListBox>
</Grid>



Моя задача была перенести скроллбар во внутренний listbox. Решение этой проблемы достаточно простое - задать свойство Width для внутреннего listbox:
Код: xml
1.
Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ListBox}, Path=ActualWidth}"


Теперь мы имеем что-то вроде этого:

Я пошел дальше. Мне необходимо добавить еще один контрол (TextBlock) перед каждым внутренним listbox (т.е. теперь у нас есть внешний listbox, каждый элемент которого состоит из TextBlock и горизонтального listbox). Не долго думая, помещаю оба контрола в StackPanel с горизонтальной ориентацией, задаю ему (лайауту) свойство ширины как делал раньше для внутреннего listbox и что я вижу? Не работает!
В итоге я получаю что-то вроде этого:

Т.е. скролбар опять вернулся во внешний listbox, но как видно из скриншота, скролить теперь по сути нечего, скроллбар двигается на несколько пикселей влево и вправо.
Текущий код (только измененная часть по сравнению с первым):
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<HierarchicalDataTemplate x:Key="ItemTemplateSchedule">
    <StackPanel Orientation="Horizontal" Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ListBox}, Path=ActualWidth}">
        <TextBlock Text="This is Text in a TextBlock"/>
        <ListBox >
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBoxItem>My-Very-Long-Item-Number-1___</ListBoxItem>
            <ListBoxItem>My-Very-Long-Item-Number-2___</ListBoxItem>
            <ListBoxItem>My-Very-Long-Item-Number-3___</ListBoxItem>
            <ListBoxItem>My-Very-Long-Item-Number-4___</ListBoxItem>
            <ListBoxItem>My-Very-Long-Item-Number-5___</ListBoxItem>
        </ListBox>
    </StackPanel>
</HierarchicalDataTemplate>



Итак, мой вопрос заключается в том, как же все-таки сделать вертикальный listbox, каждый элемент которого будет состоять из 2 контролов: TextBox и горизонтального listbox. При этом, скроллинг должен осуществляться именно во внутреннем listbox.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Скроллинг listbox'а внутри другого listbox
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]