locked
Как прокрутить грид? RRS feed

  • Вопрос

  • Пробовал поместить его в ScrollViewer.. но ничего не меняется.. виден только обрезанный левый верхний угол грида.. доступа к элементам выходящим за пределы экрана нет.. так и не смог найти как это делается в winrt?    

    5 марта 2013 г. 18:44

Ответы

  • Посмотрите пример из WinRT XAML Toolkit ScrollViewerExtensions, я так понимаю - это то, что вам нужно:


    • Помечено в качестве ответа CheeGer 6 марта 2013 г. 14:12
    • Снята пометка об ответе CheeGer 13 марта 2013 г. 8:42
    • Помечено в качестве ответа CheeGer 15 марта 2013 г. 11:41
    5 марта 2013 г. 21:48

Все ответы

  • Вы можете привести пример своего кода?
    5 марта 2013 г. 18:46
  •     <ScrollViewer>
            <Grid Width="2312" Margin="0,0,-946,-722" ScrollViewer.HorizontalScrollBarVisibility="Auto">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                    <RowDefinition />
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
    
                <TextBlock FontSize="20" FontWeight="Bold" Grid.ColumnSpan="3" Grid.Row="0">2005 Products Shipped</TextBlock>
                <TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="0">Quarter 1</TextBlock>
            <TextBlock FontSize="12" FontWeight="Bold" Grid.Row="1" Grid.Column="1"/>
                <TextBox FontSize="12"  Grid.Row="1" Grid.Column="2"></TextBox>
                <TextBox Grid.RowSpan="2"></TextBox>
                <TextBlock Grid.Row="2" Grid.Column="1">100000</TextBlock>
                <TextBlock Grid.Row="2" Grid.Column="2">150000</TextBlock>
            <TextBox Grid.Row="4" Grid.Column="0"></TextBox>
            </Grid>
            </ScrollViewer>

    • Изменено CheeGer 5 марта 2013 г. 18:56
    5 марта 2013 г. 18:56
  • А у вас сам ScrollViewer в чем находится?
    5 марта 2013 г. 19:08
  • Ни в чём.. это всё...
    5 марта 2013 г. 19:18
  • Если вы хотите сделать сетку, чтобы она автоматически прокручивалась и содержала различные элементы, то лучше использовать GridView. Краткое руководство

    5 марта 2013 г. 19:54
  • А GridView можно прокручивать по вертикали?

    Просто я с шаблонами уже пытался колдовать.. но там везде либо вертикальная(ListView), либо горизонтальная(GridView) прокрутка.. а мне нужно чтобы были сразу обе...    
    • Изменено CheeGer 5 марта 2013 г. 20:22
    5 марта 2013 г. 20:15
  • Посмотрите пример из WinRT XAML Toolkit ScrollViewerExtensions, я так понимаю - это то, что вам нужно:


    • Помечено в качестве ответа CheeGer 6 марта 2013 г. 14:12
    • Снята пометка об ответе CheeGer 13 марта 2013 г. 8:42
    • Помечено в качестве ответа CheeGer 15 марта 2013 г. 11:41
    5 марта 2013 г. 21:48
  • Спасибо за наводку.. да это то самое.. вот только я там в одном куске кода разобраться не смог.. там где грид заполняется:

     public ScrollViewerExtensionsTestPage()
            {
                this.InitializeComponent();
                var items = new List<dynamic>();
    
                // For anonymous type binding info check this article:
                // http://timheuer.com/blog/archive/2012/04/10/anonymous-type-binding-metro-style-app.aspx
                for (int i = 0; i < 5; i++)
                    for (int j = 0; j < 5; j++)
                    {
                        items.Add(new
                                  {
                                      Row = j,
                                      Column = i,
                                      Brush = new SolidColorBrush(Color.FromArgb(255, (byte)(i * 63), 255, (byte)(j * 63))),
                                      Text = (i * 5 + j).ToString()
                                  });
                    }
    
                foreach (var item in items)
                {
                    var itemPresenter =
                        (FrameworkElement)((DataTemplate)this.Resources["TestItemTemplate"]).LoadContent();
                    itemPresenter.DataContext = item;
                    Grid.SetColumn(itemPresenter, item.Column);
                    Grid.SetRow(itemPresenter, item.Row);
                    scrolledGrid.Children.Add(itemPresenter);
                }
            }
    Мне не совсем понятно, что происходит в цыкле foreach.. и как это заменить своим кодом.. и почему нельзя просто сделать так: scrolledGrid.ItemsSource = items ?
      
    12 марта 2013 г. 13:53
  • Судя по коду в этом цикле добавляются item'ы в грид. По этому отрывку сложно определить, для чего автор так сделал.

    Если это стандартный грид, то у него нет свойства ItemsSoure.

    13 марта 2013 г. 17:50
  • А по другому как-то можно добавить item'ы в грид?

    Просто у меня компилятор ругается на   

                    var itemPresenter =
                        (FrameworkElement)((DataTemplate)this.Resources["TestItemTemplate"]).LoadContent();
    
    14 марта 2013 г. 3:44
  • а как ругается?
    14 марта 2013 г. 5:47
  • Error HRESULT E_FAIL has been returned from a call to a COM component.

    Что-то мне подсказывает, что это из-за того что у моего проекта нет доступа к этому "TestItemTemplate".Что это вообще такое? может без него как-то можно обойтись? 

    • Изменено CheeGer 14 марта 2013 г. 11:33
    14 марта 2013 г. 10:28
  • Проверьте, есть ли в ресурсах приложения TestItemTemplate. В оригинале этот ресурс находится в файле ScrollViewerExtensionsTestPage.xaml.
    14 марта 2013 г. 17:44
  • Нашел.. я его оказывается изначально не стал копировать, чтоб ради него библиотеку со всеми контролами из тулкита не тащить.. думал всё проще получится.. получается логика этого мудрого прокручивания где-то в дебрях WinRTXamlToolkit.Controls прописана?  
    14 марта 2013 г. 20:00
  • Ну видимо да. Я если честно в эти дебри не заглядывал на столько глубоко, все как-то времени нету.

    14 марта 2013 г. 20:16