В нашем текущем проекте C#
MVVM
мы используем ListBox
для отображения элементов.
Существует еще один контейнер, который можно расширить ниже ListBox.
Все работаетхорошо.Когда контейнер расширяется, ListBox
сжимается и появляется ScrollBar
.
Однако, если элемент выбран в нижней части ListBox и контейнер расширяется, элемент исчезает в конце ListBox
.
Пример:
До расширения контейнера:
+--------------+
| Item 1 |
+--------------+
| Item 2 |
+--------------+
| Item 3 |
+--------------+
| Item 4 |
+--------------+
| SelectedItem |
+--------------+
| Item 6 |
+--------------+
| Item 7 |
+--------------+
+------------------+
| Container |
+------------------+
После расширения контейнера:
+--------------+---+
| Item 1 | S |
+--------------+ c |
| Item 2 | r |
+--------------+ o |
| Item 3 | l |
+--------------+ l |
| Item 4 | |
+--------------+---+
+------------------+
| |
| |
| Container |
| |
| |
+------------------+
Чего я хотел бы добиться, так это сохранитьвидимый SelectedItem
без необходимости прокрутки к нему.
Примерно так:
+--------------+---+
| Item 2 | S |
+--------------+ c |
| Item 3 | r |
+--------------+ o |
| Item 4 | l |
+--------------+ l |
| SelectedItem | |
+--------------+---+
+------------------+
| |
| |
| Container |
| |
| |
+------------------+
Каков наилучший способ добиться этого?
Я не смог ничего найтиоб этом здесь, на SO или чем-то еще.
Я видел, что можно прокручивать программно:
Я также видел, что можно было узнать, когда появляется ListBoxItem
( здесь и там ) но поскольку мои элементы уже загружены и скрыты, я не думаю, что это сработает.
Я не хочу иметь код позадиЯ должен копировать в каждом представлении, где мне нужна эта функциональность.Я думал о реализации этого в поведении, присоединенном к ListBox
, но я очень сомневаюсь, что это будет лучшим решением.
Я также думал о написании пользовательского ListBox
элемента управления, но я думаю, что это слишкоммного для такой маленькой функциональности.
Может кто-нибудь сказать мне лучший способ добиться такого поведения?Заранее спасибо.