Как показать большую сетку кнопок в элементе панорамы на 3 экранах? - PullRequest
0 голосов
/ 19 марта 2012

Я сделал очень широкую сетку с несколькими строками и столбцами, и я заполнил сетку кнопками (вертикальная прокрутка отсутствует). Все, что содержится в одном элементе панорамы. Прибл. Требуется 3 ширины экрана, чтобы охватить всю сетку при горизонтальной прокрутке (шириной около 1500 пикселей).

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

В идеале, у меня было бы три элемента панорамы, с контентом, перекрывающим их все - поэтому контент можно просматривать двумя щелчками, - но я не могу этого достичь. Можно ли перекрывать сетку тремя панорамами? Или, может быть, можно как-то добавить какие-то остановки в середине или разделить этот один элемент панорамы, который у меня сейчас есть, чтобы экран остановился где-то посередине?

Я не могу найти примеров для более чем двух экранов, и у меня не работает обтекание - мне нужна фиксированная высота, и я не могу сделать кнопки немного меньше по ширине. Во всяком случае, я даже не знаю, возможно ли добиться всего этого? Может быть, я перебираю возможности панорамы ...

Спасибо

Edit:

Это пример моей проблемы (у меня более 100 кнопок, поэтому код xaml очень большой, но это та же самая основная проблема, которую я пытаюсь решить):

<controls:PanoramaItem Header="first item" Orientation="Horizontal">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="500" />
                    <ColumnDefinition Width="500" />
                    <ColumnDefinition Width="500" />
                </Grid.ColumnDefinitions>
                <Button Grid.Row="0"
                        Grid.Column="0"
                        Width="250"
                        Height="250"
                        Content="Button1" />
                <Button Grid.Row="0"
                        Grid.Column="1"
                        Width="250"
                        Height="250"
                        Content="Button2" />
                <Button Grid.Row="0"
                        Grid.Column="2"
                        Width="250"
                        Height="250"
                        Content="Button3" />
            </Grid>             
        </controls:PanoramaItem>

Так что, если вы поместите это в свой элемент управления панорамой - вы получите очень широкий элемент панорамы - и если вы щелкнете по нему от Button1, он прыгнет полностью вправо на Button3 - так что он прокручивает вас мимо Button2 .. Я хочу, чтобы он прекратил прокрутку на Button2.

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

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

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

Другими словами, один элемент панорамы оптимизирован для максимальной ширины экрана 2, и это был бы мой ответ. Что-нибудь более 2-х экранов, и вы теряете поведение жестов, поэтому вы теряете этот контент посередине.

0 голосов
/ 19 марта 2012

Возможно, вы захотите изучить возможность установки для свойства Orientation значения Horizontal для вашего PanoramaItem, что должно дать искомый эффект: -

            <controls:PanoramaItem Header="first item" Orientation="Horizontal">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <Button Grid.Row="0"
                        Grid.Column="0"
                        Width="250"
                        Height="250"
                        Content="Button1" />
                <Button Grid.Row="0"
                        Grid.Column="1"
                        Width="250"
                        Height="250"
                        Content="Button2" />
                <Button Grid.Row="0"
                        Grid.Column="2"
                        Width="250"
                        Height="250"
                        Content="Button3" />
            </Grid>             
        </controls:PanoramaItem>

Надеюсь, это поможет.

Пол Дистон

...