Mise à jour GridView dans le windows store
-
21-12-2019 - |
Question
Je suis le développement d'une application pour windows store (le pattern MVVM) à l'aide de C#/XAML.Vue actuelle de l'Affichage des Catégories avec sa liste des cours, comme l'a fait ci-dessous.
<CollectionViewSource x:Name="groupedItemsViewSource"
Source="{Binding Path=ListCourses}"
IsSourceGrouped="true"
ItemsPath="Courses" />
Liste des cours dans GridView:
<GridView
x:Name="itemGridView"
AutomationProperties.AutomationId="ItemGridView"
AutomationProperties.Name="Grouped Items"
Grid.RowSpan="2"
Padding="116,35,40,46"
SelectionMode="Single"
ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}"
ItemTemplate="{StaticResource ListCourseItemTemplate}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
IsSwipeEnabled="false"
IsItemClickEnabled="True">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Grid Margin="1,0,0,6">
<Button AutomationProperties.Name="Group Title"
Foreground="{StaticResource WShopperAccentTextBrush}"
Style="{StaticResource TextPrimaryButtonStyle}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" Margin="3,-7,10,10" Style="{StaticResource GroupHeaderTextStyle}" />
<TextBlock Text="{StaticResource ChevronGlyph}" FontFamily="Segoe UI Symbol" Margin="0,-7,0,10" Style="{StaticResource GroupHeaderTextStyle}"/>
</StackPanel>
</Button>
</Grid>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid Orientation="Vertical" Margin="0,0,80,0"/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
</GridView>
Catégorie:
public Category()
{
}
public int Id { get; set; }
public string Name { get; set; }
public IEnumerable<Course> Courses { get; set; }
De mon point de vue le modèle ListCourses propriété ressemble à ceci:
public ObservableCollection<Category> ListCourses
{
get { return _listCourses; }
private set { SetProperty(ref _listCourses, value); }
}
Ma question est:Lorsque je supprime un cours de la liste(le retrait de l'élément de la gridView) le contrôle gridView n'est pas mise à jour et afficher les données en cours dans ListCourses bien??
supprimer func:
var category = ListCourses.FirstOrDefault(cat => cat.Id == SelectedItem.CategoryId);
category.Courses.Remove(SelectedItem);
OnPropertyChanged("ListCourses");
Des idées??
La solution
category.Courses
doit être un ObservableCollection
trop.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow