Как разместить кнопку только на одной странице панорамы (экране)?

Я использую панорамный пользовательский интерфейс в wp7.

У меня есть несколько панорамных экранов, каждый из которых содержит ListBox. Я хочу добавить кнопку только на одну страницу панорамы (вместе с ListBox), и при переходе на другую я не буду перемещать кнопку на другую страницу. Эта кнопка должна быть над окном списка, с функцией, относящейся только к этому экземпляру списка, а не к другому панорамному экрану. Возможно ли этого добиться?


person nemke    schedule 15.03.2011    source источник


Ответы (2)


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

РЕДАКТИРОВАТЬ: внутри сводного элемента (или элемента панорамы) вы должны использовать сетку, чтобы иметь две строки, кнопку в одной и список в другой

<controls:Pivot Title="MY APPLICATION">
                <!--Pivot item one-->
                <controls:PivotItem Header="item1">
                                    <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition></RowDefinition>
                        <RowDefinition></RowDefinition>
                    </Grid.RowDefinitions>
                    <Button Grid.Row="0"></Button>
                    <ListBox Grid.Row="1"></ListBox>
                </Grid>

                </controls:PivotItem>

                <!--Pivot item two-->
                <controls:PivotItem Header="item2">
                    <Grid/>
                </controls:PivotItem>
            </controls:Pivot>
person Robert    schedule 15.03.2011
comment
ups Я неправильно написал вопрос, это панорама, а не стержень. Извини, я виноват :( - person nemke; 16.03.2011
comment
думаю принцип тот же - person Robert; 16.03.2011
comment
@nemke: то же самое относится и к панораме, она содержит PanoramaItems вместо PivotItems - person Praetorian; 16.03.2011
comment
Да, вы получили мой голос (хороший след), но когда я добавляю новый PanoramaItem, это новый экран, не тот, где я был. - person nemke; 16.03.2011
comment
что вы имеете в виду под экраном? на самом деле Panorama — это один экран, и в нем есть элементы, которые позволяют прокручивать его вправо. Каждый предмет в отдельном контейнере — это то, что вам нужно? - person Robert; 16.03.2011
comment
Может быть, мне нужна сетка в Panorama, которая может содержать как список, так и кнопку на одном элементе панорамы. PanoramaItem будет сеткой. Может быть, нам стоит пойти в чат :) - person nemke; 16.03.2011
comment
Я бы сказал, что вам нужен PanoramaItem, который будет содержать Grid (2 строки), который будет содержать Button (1-я строка) и ListBox (2-я строка) - person Robert; 16.03.2011
comment
Я создал с этой сеткой. Вы можете отредактировать свой ответ так, чтобы он был принят. Лучше ты напишешь ответ, чем я. На хорошую карму :) - person nemke; 16.03.2011
comment
ОК, я отредактировал ответ, я определенно не хочу навредить своей карме :) - person Robert; 16.03.2011

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

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="header">
        <StackPanel>
            <TextBlock Text="Pivot Control">
            </TextBlock>
            <Button Margin="0,0,800,0" Width="200" Content="Test"></Button>
        </StackPanel>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

Это довольно простой пример, но вы можете ввести пользовательскую привязку.

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

<controls:Panorama TitleTemplate="{StaticResource header}">
    <controls:PanoramaItem Header="Main"></controls:PanoramaItem>
    <controls:PanoramaItem Header="Second"></controls:PanoramaItem>
    <controls:PanoramaItem Header="Third"></controls:PanoramaItem>
</controls:Panorama>

В элементе управления Panorama кнопка все равно будет перемещаться в заголовке, поэтому в вашем случае лучшим выбором будет элемент управления Pivot, где заголовок не перемещается.

person Den Delimarsky    schedule 15.03.2011