StackPanel不在Windows Phone 8.1中滚动

时间:2014-12-09 09:01:53

标签: xaml microsoft-metro winrt-xaml windows-phone-8.1

我正在为Windows Phone 8.1构建自定义控件。但是stackpanel没有向下滚动。 StackPanel包含一个ListView,它可以显示TextBlock&另一个包含切换按钮的StackPanel。

<StackPanel Orientation="Vertical" >
        <ListView Grid.Row="0" Background="RoyalBlue">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <TextBlock Text="Some Text" Foreground="Black" FontSize="20" TextAlignment="Center" ></TextBlock>
                    </Grid>                     
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
        <StackPanel Grid.Row="2" HorizontalAlignment="Stretch" Background="Red" Orientation="Horizontal">
            <Grid HorizontalAlignment="Stretch">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <ToggleButton Grid.Column="0" Content="Toggle Me"  />
            </Grid>
       </StackPanel>
</StackPanel>

2 个答案:

答案 0 :(得分:5)

Stackpanel不提供任何滚动。 您可以将其包装到ScrollViewer中。

另外:listView已经提供滚动。

但是:StackPanel里面的ListView会拾取你所有的操作事件。此外,Stackpanel内的ListView将具有无限的高度,因此无法实现其虚拟化功能。

如果您只想在ListView上方和/或下方创建内容,可以使用其页眉/页脚属性。

答案 1 :(得分:1)

在StackPanel上添加ScrollViewer,它将使其可滚动。

例如:

array(
        [2015-09-29] => array(
            [date] => 2015-09-29
            [fully_book] => true,
            [time] => array(
                  [0] => morning,
                  [1] => night
            )
        ),
        [2015-12-07] = array(
            [date] => 2015-09-29,
            [fully_book] => false,
            [time] => array(
                  [0] => night
            )
        ),
        [2015-11-15] = array(
            [date] => 2015-11-15,
            [fully_book] => false,
            [time] => array(
                  [0] => morning
            )
    )