Wpf scrollviewer не работает

Wpf scrollviewer не работает

Есть Grid, в нем есть ячейка которая может увеличиваться сплиттерами. В этой ячейке есть такой контент:

так вот картинка по своему размеру больше чем размер Grid.Column=»2″, но скроллинг не появляется. What I do wrong?

От: Аноним
Дата: 27.12.10 13:33
Оценка:

Здравствуйте, skodnik, Вы писали:

S>Есть Grid, в нем есть ячейка которая может увеличиваться сплиттерами. В этой ячейке есть такой контент:

S>
S>так вот картинка по своему размеру больше чем размер Grid.Column=»2″, но скроллинг не появляется. What I do wrong?

Не прав ты в том, что был использован Canvas. Данный элемент не устанавливает свой размер
по размерам входящих элементов, он устанавливает размер в тот, что ему позволят его контейнер.
Поэтому полосы прокрутки не появляются. Либо замени Canvas, либо выстави ему руками Widht & Height

От: skodnik
Дата: 27.12.10 13:45
Оценка:
От: skodnik
Дата: 27.12.10 13:55
Оценка:

Здравствуйте, skodnik, Вы писали:
S>А если мне надо чтобы Canvas имел размеры Image который в нем. Как прибиндить?
Уже нашел:

От: Codechanger
Дата: 27.12.10 17:10
Оценка:

Здравствуйте, skodnik, Вы писали:

S>Здравствуйте, skodnik, Вы писали:
S>>А если мне надо чтобы Canvas имел размеры Image который в нем. Как прибиндить?
S>Уже нашел:

На самом деле есть решение попроще

От: skodnik
Дата: 28.12.10 07:41
Оценка:
От: Codechanger
Дата: 28.12.10 08:01
Оценка:

Здравствуйте, skodnik, Вы писали:

S>Здравствуйте, Codechanger, Вы писали:

C>>На самом деле есть решение попроще
S>В студию!

Вот так Canvas растянется на весь размер Image.

Источник

Не работает scrollviewer

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Не работает ScrollViewer на мониторах с маленьким разрешением
В развернутом состоянии окна все идеально помещается, но это на большом мониторе, на меньших.

C# WPF реализация скроллинга на сенсоре. ScrollViewer не работает на сенсоре
Пишу приложение для сенсорного терминала на C# WPF. Проблема такая: Область с текстом не.

Настроить ScrollViewer
Не получается настроить ScrollViewer чтоб была прокрутка для Polygon, если окно уменьшить. Код: .

ListView в ScrollViewer
Вообщем прикрутил сначала на окно ListView, в него могут добавляться текстовые строки и картинки.

Ferrym, а зачем вы ListView обернули в StackPanel?
Уберите StackPanel.

Потом чтобы понять надо видеть как у вас заполняется ListView.
Сделайте скрины двух вариантов один просто ListView, второй — с обёрнутым в ScrollViewer

Ferrym, StackPanel сжимает содержимое.
Если надо установить цвет фона, то используйте свойство Background.
Оно есть у всех контролов.

Добавлено через 1 минуту
Ferrym, скрины скиньте.
Без них я не смогу понять в чём дело.

Читайте также:  Как настроить general satellite gs b531m

Рисунок 2 — работает, но не так как хотелось бы.

Комментарий модератора
Ferrym, большие рисунки сначала скачивайте себе в альбом.
Потом вставляете в пост через тег [img]
Тогда рисунки будут в хорошем разрешении

Ferrym, у меня сейчас нет компа, потому просто запустить и отладить ваш пример не могу.
На сайт захожу со смарта.
Поэтому чтобы понять, мне нужно больше информации от вас.

1) Уберите StackPanel в который завернут ListView. Задайте цвет фона и границы ListView через его свойства Background и BorderBrush. Если нужны ещё какие-то дополнительные элементы декора, то заверните ListView в Border, но ни как не StackPanel.

2) Мне непонятно как из вашего XAML вы получаете компоновку на скринах. Скрины у меня сильно размазаны — ничего не видно. Выше я написал как надо выкладывать изображения в хорошем разрешении.

3) Из XAML общая ширина ListView более 1000, почему он у вас в верхнем левом углу, а не под строкой с меню? Из XAML этого не понять. Нужно больше кода. Скиньте целиком весь код XAML окна.

4) Мне нужно не то, как вы получаете данные из БД, а знать заполнена коллекция данными или она пустая. Так как это тоже влияет на размеры ListView. Поэтому просто напишите (если не получается дать скрин) есть его какие-то строки в ListView, кроме заголовков.

Reset ScrollViewer
Здравствуйте хотел спросить! как можно сбросить полосу прокрутки чтобы она сбрасывала свой.

ScrollViewer и BorderBrush
Добрый день. Помогите! Я вообще не могу понять почему границы контрола ScrollViewer не.

Настроить ScrollViewer
Здравствуйте, форумчане! Помогите, пожалуйста, настроить ScrollViewer. Вроде, много всего.

Источник

ScrollViewer не прокручивается в WPF

Я использую элемент управления scrollviewer вокруг своей панели стека, который содержит ItemsControl. Когда в ItemsControl много элементов, предполагается, что он прокручивается, но по какой-то причине он просто отсекает элементы. Вот код:

5 ответов

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

Вы можете понять проблему из приведенного ниже примера.

Приведенный выше код похож на ваш, и он не дает вам полос прокрутки. Но посмотрите приведенный ниже код, в котором я изменил только StackPanel на Grid (любая панель, которая учитывает размер своих дочерних элементов в зависимости от размера панелей, но stackpanel — нет)

ОБНОВЛЕНИЕ : но если вам действительно нужно использовать StackPanel , вам может потребоваться установить размер для вашего ScrollViwer , чтобы получить прокрутку содержимого

Вы должны исправить высоту Scrollviewer, но можете легко привязать к StackPanel ActualHeight:
(проверенный код)

Или еще лучше, если вы не можете изменить имя StackPanel:

Это проблема «сначала вы», StackPanel запрашивает у ScrollViewer высоту, а ScrollViewer запрашивает у StackPanel максимальную высоту, которой она может быть.

ItemsControl должен содержать ScrollViewer , а не наоборот. Все, о чем знает ScrollViewer , это сам ItemsControl в вашем случае — он не знает о внутренних элементах.

Попробуйте что-то вроде этого:

Scroll должен быть родительским элементом для дочернего элемента изменения размера, поэтому поместите в него элемент управления изменением размера (в данном случае панель стека).

У меня была проблема, когда я показал ItemsControl в сетке, и чтобы увидеть полосы прокрутки, мне пришлось задать высоту этой ячейки сетки * по размеру.

Однако это означало, что ItemsControl всегда заполнял ячейку, даже если было всего несколько значений.

Я хотел, чтобы ItemsControl был достаточно большим, чтобы показать, что у него есть, но если в нем слишком много элементов, я хотел, чтобы он прокручивался. Другими словами, я хотел, чтобы это работало только на мониторах любого размера.

Источник

Как заставить ScrollViewer работать внутри StackPanel?

В следующем WPF XAML ScrollViewer не работает (он отображает полосу прокрутки, но вы не можете прокручивать, и содержимое уходит из окна вниз).

Я могу изменить внешний StackPanel на Grid, и он будет работать.

Однако в моем приложении, из которого я воспроизвел следующий код, мне нужно иметь внешний StackPanel. Что мне нужно сделать со StackPanel, чтобы ScrollViewer отображал полезную полосу прокрутки? например, VerticalAlignment = «Stretch» Height = «Auto» не работают.

7 ответов

Вы не можете не зафиксировать высоту StackPanel . Он предназначен для неограниченного роста в одном направлении. Я бы посоветовал использовать другой Panel . Зачем вам «нужен» внешний StackPanel ?

Некоторое время меня это тоже беспокоило, трюк в том, чтобы поместить вашу панель стека в средство просмотра прокрутки.

Кроме того, вам необходимо убедиться, что вы установили для свойства CanContentScroll средства просмотра прокрутки значение True, вот пример:

Обратите внимание, что иногда у вас может быть StackPanel, даже не осознавая этого. В моем случае у меня был этот код

Который работал нормально. «Страницы», на которые ссылается привязка, были действительно разными, сложными UserControls, и я хотел, чтобы на некоторых из них были только полосы прокрутки. Поэтому я удалил средство просмотра прокрутки:

А затем я поставил ScrollViewer как верхний элемент среди тех элементов управления, где я хотел. Однако это не сработало. Контент просто утекал со страницы. Сначала я не думал, что этот вопрос / ответ может мне помочь, но я понял, что ItemPanel по умолчанию для ItemsControl — это StackPanel. Итак, я решил свою проблему, указав ItemsPanel, который не был StackPanel:

Вот как это работает:

Привязав высоту ScrollViewer к внутренней высоте окна.

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

Вывод:

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

Вот как я бы сделал это, если бы ваша панель стека была внутри сетки:

Перемещение Grid.Row = «1» из StackPanel в ScrollViewer полностью решило эту проблему для меня.

У меня был длинный список из 40 элементов для отображения в StackPanel, но отображались только первые 20.

Источник

ScrollViewer не прокручивается в WPF

Я использую элемент управления scrollviewer вокруг моей панели стека, который содержит ItemsControl. Когда в ItemsControl много элементов, предполагается прокручивать, но по какой-то причине он просто вырезает элементы. Вот код:

5 ответов

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

вы можете понять проблему из приведенного ниже примера.

выше код похож на ваш, и это не дает вам прокрутки. Но ниже код, в котором я изменил только StackPanel до Grid (любой панель, которая уважает размер своих детей на основе размера панелей, но stackpanel этого не делает)

обновление : но если вам действительно нужно использовать StackPanel тогда вам может потребоваться установить размер для вашего ScrollViwer чтобы получить содержимое прокрутки

вы должны зафиксировать высоту Scrollviewer, но можете легко привязаться к StackPanel ActualHeight:
(проверенный код)

или еще лучше, если вы не можете изменить имя StackPanel:

это проблема «вы первый», StackPanel спросить ScrollViewer для высоты и ScrollViewer спросить StackPanel для максимальной высоты это может быть.

на ItemsControl должен содержать ScrollViewer , а не наоборот. Все это ScrollViewer знает о том, что в вашем случае — он не знает о внутренних элементов.

попробуйте что-то вроде этого:

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

у меня была проблема, в которой я показал ItemsControl в сетке и для того, чтобы увидеть полосы прокрутки, я должен был дать этой ячейке сетки *-размер высоты.

однако это означало, что ItemsControl всегда заполнял ячейку, даже если было всего несколько значений.

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

этот код в Загруженное событие работало для меня:

Источник

Оцените статью