首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListPicker IndexOutOfRangeException

ListPicker IndexOutOfRangeException
EN

Stack Overflow用户
提问于 2012-03-13 05:58:58
回答 1查看 186关注 0票数 0

我的ListPicker控件有问题。我在我的页面中实现了我的列表选择器,如下所示,但我在运行时收到了一个IndexOutOfRangeException,我不太确定如何解决这个问题:

SettingsPage.xaml

代码语言:javascript
复制
<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Name="SearchProviderItemTemplate">
        <TextBlock Text="{Binding SearchProvider}" />
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

<ScrollViewer x:Name="ContentPanel_Browser" Margin="12,0,12,0">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="70"/>
                        <RowDefinition Height="70"/>
                        <RowDefinition/>
                        <RowDefinition/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>

                    ...

                    <!-- Search Provider -->
                    <TextBlock Text="Search provider" Margin="12,7,12,8"
                       Grid.Row="3" VerticalAlignment="Bottom"
                       Foreground="{StaticResource PhoneSubtleBrush}"/>
                    <toolkit:ListPicker x:Name="SearchProviderListPicker" Grid.Row="4" Grid.ColumnSpan="2" Margin="12,0,12,0"  
                                        ItemTemplate="{Binding SearchProviderItemTemplate}" 
                                        SelectionChanged="SearchProviderListPicker_SelectionChanged" />
                </Grid>
            </ScrollViewer>                

SettingsPage.xaml.cs

代码语言:javascript
复制
    string searchProvider;

    String[] SearchProvider = 
    {
        "Google", 
        "Bing",
        "Yahoo",
        "Ask",
        "AOL"
    };

    private void SearchProviderListPicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        string selectedItem = e.AddedItems[0] as string;  //IndexOutOfRangeException was unhandled

        switch (selectedItem)
        {
            case "Google":
                searchProvider = "http://www.google.com/search?q=";
                break;
            case "Bing":
                searchProvider = "http://www.bing.com/search?q=";
                break;
            case "Yahoo":
                searchProvider = "http://search.yahoo.com/search?p=";
                break;
            case "Ask":
                searchProvider = "http://www.ask.com/web?q=";
                break;
            case "AOL":
                searchProvider = "http://search.aol.com/search?q=";
                break;
            //default:
            //    SearchProvider = "http://search.aol.com/search?q=";
            //    break;
        }

字符串在SettingsPage.xaml.cs中以行'string selectedItem = e.AddedItems as string;‘出现。我记得我在StackOverflow上看到了如何解决这个问题,但我现在找不到那个源代码。关于如何设置界限或检查以确保此异常不会发生,您有什么想法吗?提前感谢(任何代码帮助都会对我有帮助!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-13 06:29:10

因为AddedItems是一个IList,你能不能在尝试访问它们之前检查一下它里面有没有一些项目?

在该方法的顶部类似于以下内容应该可以解决这个问题:

代码语言:javascript
复制
if (e.AddedItems.Count <= 0)
{
    return;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9675414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档