Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вертикальная прокрутка в ListBox-е 
V
    Опции темы
V0fka
Дата 26.6.2013, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Привет!

Есть Listbox, который программно заполняется. Если я уменьшаю размер формы по вертикали, то часть Listbox-а пропадает из области видимости. При этом, если уменьшаю по горизонтали - то автоматом появляется горизонтальная полоса прокрутки. Как сделать, чтобы вертикальная полоса прокрутки появлялась?
PM MAIL   Вверх
dzaraev
Дата 27.6.2013, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 12.1.2013

Репутация: нет
Всего: 1



Покажите ваш XAML код и код заполнения ListBox'a ?

Если просто разместить ListBox в гриде и в окне, то он по-умолчанию будет растянут и полосы прокрутки будут появляться и по горизонтали и по вертикали. Например так:
Код

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        >
    <Grid>
        <Border BorderBrush="LightCoral" BorderThickness="1">
            <ListBox x:Name="_listBox">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{Binding Name}" Background="Bisque" Margin="5"/>
                            <TextBlock Text="{Binding Description}" Background="LightCyan" Margin="5"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Border>
    </Grid>
</Window>


Код

        public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            _listBox.Items.Add(new Item {Name = "John Rembo", Description = "Tra-ta-ta-ta-ta"});
            _listBox.Items.Add(new Item {Name = "Ricky Martin", Description = "lalalalala"});
            _listBox.Items.Add(new Item {Name = "another person", Description = "nevermind"});
            _listBox.Items.Add(new Item { Name = "another person", Description = "nevermind" });
            _listBox.Items.Add(new Item { Name = "another person", Description = "nevermind" });
            _listBox.Items.Add(new Item { Name = "another person", Description = "nevermind" });
            _listBox.Items.Add(new Item { Name = "another person", Description = "nevermind" });
            _listBox.Items.Add(new Item { Name = "another person", Description = "nevermind" });
        }
    }

    public class Item
    {
        public string Name { get; set; }
        public string Description { get; set; }
    }

--------------------
Если вопрос решён - помечайте тему.  
PM MAIL   Вверх
V0fka
Дата 1.7.2013, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Разметка такая:

Код

<StackPanel Orientation="Vertical" Grid.Row="1" VerticalAlignment="Center">
            <ListBox x:Name="fListBox" ItemsSource="{Binding Path=Articles}" BorderThickness="0">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding Path=Title}" FontSize="14" FontWeight="Bold" ToolTip="{Binding Path=FullTitle}"/>
                            <TextBlock Text="{Binding Path=PubDate}" ToolTip="{Binding Path=FullTitle}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </StackPanel>


Заполняю таким кодом:

Код

int a;
for (a = 1; a <= 20; a++ )
{
     Articles.Add(new Article("title "+a.ToString(), "full title "+a.ToString(), "link "+a.ToString(), "pub date "+a.ToString()));
}

PM MAIL   Вверх
dzaraev
Дата 1.7.2013, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 12.1.2013

Репутация: нет
Всего: 1



У вас в корне разметки стоит StackPanel. Поведение StackPanel таково, что если элементы в неё не влазят, то область, вышедшая за границу, просто отсекается. Самые простые варианты решения - поместить StackPanel в ScrollViewer 
Код

<ScrollViewer>
    <StackPanel Orientation="Vertical" Grid.Row="1" VerticalAlignment="Center"> 
        ...
    </StackPanel>
</ScrollViewer>

либо вместо StackPanel использовать DockPanel или Grid.

Это сообщение отредактировал(а) dzaraev - 1.7.2013, 13:59
--------------------
Если вопрос решён - помечайте тему.  
PM MAIL   Вверх
V0fka
Дата 1.7.2013, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



dzaraev, премного благодарен! Сделал через DockPanel.
PM MAIL   Вверх
gambit
Дата 2.7.2013, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: нет
Всего: 40



V0fka, если вопрос решен, отметьте его таковым, пожалуйста
PM MAIL ICQ Skype   Вверх
V0fka
Дата 2.7.2013, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Помечаю.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0846 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.