LongListSelector - значение не попадает в ожидаемый диапазон
Я обновил приложение с wp7 до 8 и теперь получаю исключение System.ArgumentException "Значение не попадает в ожидаемый диапазон". Приложение выдает исключение после выхода из метода, в котором я установил ItemsSource для элемента управления LongListSelector. StackTrace недоступен в ExceptionObject, и это работает без проблем в wp7.
В качестве теста я сделал следующее в событии Loaded для приложения:
private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
{
List<string> test = new List<string>();
test.Add("hi");
BrowseListBox.ItemsSource = test;
}
После завершения метода генерируется исключение.
Вот мой XAML для LongListSelector. Текстовые свойства TextBlock ранее были привязаны, но были заменены статическими значениями, пока я не получу эту работу.
<phone:LongListSelector Name="BrowseListBox" IsGroupingEnabled="True" LayoutMode="Grid">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17">
<TextBlock Text="test" TextWrapping="Wrap" FontSize="29" Tap="TextBlock_Tap_1" />
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
<phone:LongListSelector.GroupHeaderTemplate>
<DataTemplate>
<Border>
<TextBlock Text="test" FontSize="32" Foreground="White" />
</Border>
</DataTemplate>
</phone:LongListSelector.GroupHeaderTemplate>
<phone:LongListSelector.JumpListStyle>
<Style TargetType="phone:LongListSelector">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Border Name="JumpListBorder" BorderThickness="0,0,0,1">
<TextBlock Text="test" FontSize="50" Foreground="White" />
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</phone:LongListSelector.JumpListStyle>
</phone:LongListSelector>
Кто-нибудь видел это раньше?
3 ответа
Это потому, что вы используете LayoutMode Grid
Вы можете либо не использовать сетку, либо указать свойство GridCellSize, и тогда оно будет работать:
<phone:LongListSelector Name="BrowseListBox" IsGroupingEnabled="True" LayoutMode="Grid" GridCellSize="50,50">
Для меня у меня была такая же проблема, вокруг не было найдено никакого решения. Я перезапустил свою визуальную студию, и она ушла.
Я получил эти проблемы при попытке уведомить об изменении свойства из потока (асинхронная задача), однако приложение не выдало мне ошибку, но при возврате к представлению я получил ошибку, о которой вы упоминали выше. Использование диспетчера решило мою проблему.
Deployment.Current.Dispatcher.BeginInvoke(delegate
{
// Do work
});