当SIP打开时,在WP8上查看LongListSelector中的顶级项目

时间:2013-06-10 15:48:14

标签: windows-phone-8 longlistselector

我有一个使用LongListSelector显示项目列表的应用程序,在页面底部我有一个TextBox。轻触TextBox时,SIP会显示自己。此时,我无法滚动到LLS的顶部。

示例代码:

XAML:

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Grid Grid.Row="0">
            <phone:LongListSelector x:Name="TheList">
                <phone:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding}"
                                   Style="{StaticResource PhoneTextLargeStyle}"/>
                    </DataTemplate>
                </phone:LongListSelector.ItemTemplate>
            </phone:LongListSelector>
        </Grid>

        <Grid Grid.Row="1">
            <TextBox />
        </Grid>
    </Grid>

C#:

    public MainPage()
    {
        InitializeComponent();

        Loaded += (sender, args) =>
        {
            var list = new List<string>();
            for (var i = 0; i < 30; i++)
            {
                list.Add("This is string number " + i);
            }

            TheList.ItemsSource = list;
        };
    }

这是我能看到的,我可以下拉到5号字符串,但看不到任何更高的字符串: LongListSelector Problem

有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

ScrollViewer未考虑SIP,因此其滚动体验与SIP不可见时相同(这就是无法达到顶部的原因)。当显示SIP时,一种解决方法是在LongListSelector的顶部添加边距(如果文本框位于顶部,则为底部)。

由于没有SIP事件,您可以处理TextBox的GotFocusLostFocus事件。 (180值是通过反复试验获得的)

private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
   TheList.Margin = new Thickness(0,180,0,0);
}

private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
   TheList.Margin = new Thickness();
}