2013-12-03 7 views
0

Я пытаюсь загрузить данные в GridView после того, как TextBlock из другого GridView на странице был нажат/щелкнул. Первый GridView, содержащий список TextBlocks, загружается правильно.GridView не загружает данные

Вот мой XAML код для обоих GridViews, мои Наручники кажутся правильным:

<GridView x:Name="CourseNoGridView" Margin="50,50,0,0" Grid.Row="1" VerticalAlignment="Top" Height="568" ItemsSource="{Binding Distinct_CourseNo}" SelectionMode="Single" Padding="0,0,0,10" HorizontalAlignment="Left" Width="525" SelectionChanged="CourseNoGridView_SelectionChanged"> 
     <GridView.ItemTemplate> 
      <DataTemplate> 
       <Border BorderBrush="White"> 
        <TextBlock x:Name="CourseNoTextBlock" Text="{Binding CourseNo}" TextWrapping="NoWrap" FontSize="24" Width="200" Height="Auto" Padding="10" Tapped="CourseNoTextBlock_Tapped"/> 
       </Border> 
      </DataTemplate> 
     </GridView.ItemTemplate> 
    </GridView> 
    <GridView x:Name="SectionsGridView" Margin="580,50,0,0" Grid.Row="1" VerticalAlignment="Top" Height="568" ItemsSource="{Binding Clicked_CourseNo_Sections}" SelectionMode="Single" Padding="0,0,0,10" HorizontalAlignment="Left" Width="776" SelectionChanged="CourseNoGridView_SelectionChanged"> 
     <GridView.ItemTemplate> 
      <DataTemplate> 
       <Border BorderBrush="White"> 
        <TextBlock x:Name="SectionTextBlock" Text="{Binding Get_Section}" TextWrapping="NoWrap" FontSize="24" Width="200" Height="Auto" Padding="10"/> 
       </Border> 
      </DataTemplate> 
     </GridView.ItemTemplate> 
    </GridView> 

Вот мой код для обработки щелчков/прослушиванием элемента в первом GridView:

private void CourseNoGridView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    clickedSection = (Sections)e.AddedItems[0]; 
} 

private void CourseNoTextBlock_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    this.Clicked_CourseNo_Sections = (from s in Roster_Sections 
             where s.CourseNo.Equals(clickedSection.CourseNo) 
             select s).ToList(); 
} 

ответ

0

Похоже, добавив последнюю строку кода ниже исправили проблему.

private void CourseNoTextBlock_Tapped(object sender, TappedRoutedEventArgs e) 
     { 
      this.Clicked_CourseNo_Sections = (from s in Roster_Sections 
               where s.CourseNo.Equals(clickedSection.CourseNo) 
               select s).ToList(); 

      SectionsGridView.ItemsSource = Clicked_CourseNo_Sections; 
     } 
+1

Это может сработать в этом сценарии, но я был бы удивлен, если бы вы не столкнулись с проблемами в будущем. ObservableCollection - это то, что вы должны использовать – wdavo

+0

Я буду помнить об этом. Я ценю вашу помощь! – cdalto

1

Что вы хотите сделать, это использовать ObservableCollection и привязать ваш вид сетки к этому. Затем в обработчике событий «Tapped» вы очищаете существующие элементы из этой коллекции и добавляете новые элементы.

Что-то вроде этого:

private readonly ObservableCollection<Sections> currentSections = new ObservableCollection<Sections>(); 

//This is what we bind to 
public ObservableCollection<Sections> CurrentSections { get { return currentSections; } } 

private void CourseNoGridView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    clickedSection = (Sections)e.AddedItems[0]; 
} 

private void CourseNoTextBlock_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    var courseSections = (from s in Roster_Sections 
        where s.CourseNo.Equals(clickedSection.CourseNo) 
        select s); 

    CurrentSections.Clear(); 
    CurrentSections.AddRange(courseSections); 
} 

Там какая-то документация здесь:

http://msdn.microsoft.com/en-us/library/windows/apps/hh758320.aspx

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