我的ListPicker控件有问题。我在我的页面中实现了我的列表选择器,如下所示,但我在运行时收到了一个IndexOutOfRangeException,我不太确定如何解决这个问题:
SettingsPage.xaml
<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
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上看到了如何解决这个问题,但我现在找不到那个源代码。关于如何设置界限或检查以确保此异常不会发生,您有什么想法吗?提前感谢(任何代码帮助都会对我有帮助!)
发布于 2012-03-13 06:29:10
因为AddedItems是一个IList,你能不能在尝试访问它们之前检查一下它里面有没有一些项目?
在该方法的顶部类似于以下内容应该可以解决这个问题:
if (e.AddedItems.Count <= 0)
{
return;
}https://stackoverflow.com/questions/9675414
复制相似问题