Как добавить несколько элементов управления в PivotItem, не мешая вертикальной прокрутке? - PullRequest
1 голос
/ 04 декабря 2011

У меня есть элемент управления Pivot в приложении Windows Phone Mango, и у одного из элементов Pivot есть список. Он отлично работает, когда у меня есть только ListBox в качестве содержимого PivotItem.

           <controls:PivotItem Header="Item1">
                <ListBox
                    x:Name="longListBox" 
                    ItemsSource="{Binding AllItems}" 
                    Margin="12, 0, 12, 0" Width="440" 
                    ItemTemplate="{StaticResource ItemTemplate}" />
            </controls:PivotItem>

Теперь я хотел бы добавить больше элементов управления над списком в PivotItem, скажем, Image.

           <controls:PivotItem Header="Item1">
                <StackPanel>
                    <Image 
                         Source="/Images/header.png"
                         Height="48"
                         Width="48"/>

                    <ListBox
                        x:Name="longListBox" 
                        ItemsSource="{Binding AllItems}" 
                        Margin="12, 0, 12, 0" Width="440" 
                        ItemTemplate="{StaticResource ItemTemplate}" />

                </StackPanel>
            </controls:PivotItem>

Однако с этими изменениями вертикальная прокрутка PivotItem работает очень странно, перемещая элементы списка вниз, а не вверх. По сути, элементы в нижней части ListBox не доступны.

Я пытался установить высоту StackPanel на какое-то огромное число, пытался добавить ScrollViewer, но не могу заставить его работать.

Как я могу исправить проблему с прокруткой?

1 Ответ

2 голосов
/ 04 декабря 2011

StackPanel дает дочерним элементам любую высоту / ширину, о которой они просят, и это делает внутреннюю ListBox неверно рассчитанной по фактической высоте, и тогда ScrollViewer не будет работать должным образом.

Попробуйте изменить StackPanel на Grid с двумя строками, и оно должно работать.

            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition/>
                </Grid.RowDefinitions>
...