2013-07-27 2 views
2

Я обновил приложение от wp7 до 8 и теперь получаю System.ArgumentException «Значение не входит в ожидаемый диапазон». Приложение выдает исключение после выхода из метода, где я устанавливаю элемент ItemsSource для элемента управления LongListSelector. StackTrace недоступен из ExceptionObject, и это работает без каких-либо проблем в wp7.LongListSelector - Значение не входит в ожидаемый диапазон

В качестве теста, я сделал следующее нагруженного событие для применения:

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e) 
     { 
      List<string> test = new List<string>(); 
      test.Add("hi"); 
      BrowseListBox.ItemsSource = test; 
     } 

После того, как метод завершен исключение.

Вот мой XAML для LongListSelector. Свойства TextBlock Text ранее были привязаны, но были заменены статическими значениями, пока я не получу эту работу.

<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> 

Кто-нибудь видел это раньше?

ответ

8

Это потому, что вы используете LayoutMode Сетка

Вы можете не использовать сетку, или указать свойство GridCellSize, а затем он работает:

<phone:LongListSelector Name="BrowseListBox" IsGroupingEnabled="True" LayoutMode="Grid" GridCellSize="50,50"> 
+0

Ух, такая простая ошибка. Спасибо! – Jordan

+1

Ничего себе. Какое бесполезное сообщение из системы. – Jedidja

0

Я получил эти проблемы при попытке для уведомления об изменении свойства из потока (async Task) приложение не выдало мне ошибку, однако, возвращаясь к просмотру, я получил указанную выше ошибку. Использование диспетчера решило мою проблему.

Deployment.Current.Dispatcher.BeginInvoke(delegate 
      { 
       // Do work 
      }); 
0

Для меня была такая же проблема, у нас не было никакого решения. Я перезапустил свою визуальную студию, и она ушла.

Смежные вопросы