locked
List Box RRS feed

  • Вопрос

  • Добрый день)

    Создаю usercontrol, добавляю их на listbox. Они отображаются,но listbox не прокручивается. Когда тянешь вниз или верх, они опускаются и сжимаются немного. Что делать?

    listBox.Items.Add(list_lessons); - так добавляю


    27 декабря 2013 г. 15:18

Ответы

  • Тогда используйте DataTemplate для ListBoxItems.

    http://msdn.microsoft.com/ru-ru/library/cc265158(v=vs.95).aspx

    30 декабря 2013 г. 9:35
  • Такое бывает когда размеры внутренних конролов больше чем ListBox, например, ширина вложенного контрола больше ширины ListBox. Пробежитесь по размерам. Делайте контролы "резиновыми", внимательно относитесь к заданию различных отступов.
    30 декабря 2013 г. 11:48
  • Сделал высоту listbox не авто, а свою "1000" , в который добавляю usercontrol. Прокрутка стала работать)) 
    • Изменено Strevg 7 января 2014 г. 19:37
    • Помечено в качестве ответа Strevg 7 января 2014 г. 19:37
    7 января 2014 г. 19:36

Все ответы

  • Вот usercontrol xaml

    <UserControl x:Class="puzzle.elements.lesson"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        FontFamily="{StaticResource PhoneFontFamilyNormal}"
        FontSize="{StaticResource PhoneFontSizeNormal}"
        Foreground="{StaticResource PhoneForegroundBrush}"
        d:DesignHeight="150" d:DesignWidth="480">
        
        <Grid x:Name="LayoutRoot">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="100*" />
                <ColumnDefinition Width="380*" />
            </Grid.ColumnDefinitions>
            <Grid Grid.Column="1" Height="150" HorizontalAlignment="Left" Name="grid1" VerticalAlignment="Top" Width="380">
                <Grid.RowDefinitions>
                    <RowDefinition Height="50*" />
                    <RowDefinition Height="100*" />
                </Grid.RowDefinitions>
                <Grid Height="50" HorizontalAlignment="Left" Name="grid2" VerticalAlignment="Top" Width="380">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="146*" />
                        <ColumnDefinition Width="234*" />
                    </Grid.ColumnDefinitions>
                    <TextBlock HorizontalAlignment="Center" Name="name_lesson" Text="Lesson 1" VerticalAlignment="Center"/>
                    
                </Grid>
                <TextBox  Grid.Row="1" HorizontalAlignment="Left" Name="about" Text="TextBlock" VerticalAlignment="Top"  FontSize="16" TextWrapping="Wrap" IsEnabled="False" />
            </Grid>
            <Image Grid.Column="0" Height="88" HorizontalAlignment="Center" Name="image" Stretch="Fill" VerticalAlignment="Center" Width="88"/>
            
        </Grid>
    </UserControl>

    Вот он же только реализован как класс.

    namespace puzzle.elements
    {
        public partial class lesson : UserControl
        {
            public lesson()
            {
                InitializeComponent();
            }
            public lesson(string les_name, string les_about):this()
            {
                about.Text = les_about;
                name_lesson.Text = les_name;
            }
            public lesson(string les_name,string les_about,string img):this()
            {
    
            }
        }
    }

    Страница к которую вставляю элементы

     <Grid x:Name="LayoutRoot" Background="Transparent">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <!--TitlePanel содержит имя приложения и заголовок страницы-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock x:Name="ApplicationTitle" Text="{StaticResource app_name}" Style="{StaticResource PhoneTextNormalStyle}"/>
                <TextBlock x:Name="PageTitle" Text="{StaticResource list_lessons}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
            </StackPanel>
    
            <!--ContentPanel – поместите здесь дополнительное содержимое-->
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <ListBox HorizontalAlignment="Left" Name="listBox" VerticalAlignment="Top" Width="460" />
            </Grid>
        </Grid>

    Вот код, где вставляю элементы через цикл

    public partial class Lessons : PhoneApplicationPage
        {
            class ItemLessons : ItemsControl
            {
                puzzle.elements.lesson[] mas_less;
                public ItemLessons()
                {
                    mas_less = new elements.lesson[10];
                    for (int i = 0; i < 10; i++)
                    {
                        mas_less[i] = new elements.lesson("lesson1", "'Это инофрмация о уроке,Ю котороый надо пройти и очееееень длиной предложениеЭ");
                        this.Items.Add(mas_less[i]);
                    }
                }
            
            }
            ItemLessons list_lessons;
            public Lessons()
            {
                InitializeComponent();
                list_lessons = new ItemLessons();
                //ContentPanel.Children.Add(list_lessons);
                listBox.Items.Add(list_lessons);
    
            }
        }

    28 декабря 2013 г. 18:03
  • Попробуйте выставить высоту для ListBox
    28 декабря 2013 г. 20:05
  • В listbox я хочу увидит свой конрол. Может быть можно как-то создать еще по другому, чтобы свои контролы отображались в списке и прокрущивались, т.е. как список уроков но с отображением названия и краткого описания его

    29 декабря 2013 г. 20:36
  • Тогда используйте DataTemplate для ListBoxItems.

    http://msdn.microsoft.com/ru-ru/library/cc265158(v=vs.95).aspx

    30 декабря 2013 г. 9:35
  • Такое бывает когда размеры внутренних конролов больше чем ListBox, например, ширина вложенного контрола больше ширины ListBox. Пробежитесь по размерам. Делайте контролы "резиновыми", внимательно относитесь к заданию различных отступов.
    30 декабря 2013 г. 11:48
  • Посмотрел размеры, сделал их резиновые все равное не помогает(
    7 января 2014 г. 19:30
  • Сделал высоту listbox не авто, а свою "1000" , в который добавляю usercontrol. Прокрутка стала работать)) 
    • Изменено Strevg 7 января 2014 г. 19:37
    • Помечено в качестве ответа Strevg 7 января 2014 г. 19:37
    7 января 2014 г. 19:36