Actualizar GridView en la tienda de Windows
-
21-12-2019 - |
Pregunta
Estoy desarrollando una aplicación para la tienda de Windows (patrón MVVM) usando C#/XAML.Vista actual que muestra categorías con su lista de cursos, como se hace a continuación.
<CollectionViewSource x:Name="groupedItemsViewSource"
Source="{Binding Path=ListCourses}"
IsSourceGrouped="true"
ItemsPath="Courses" />
Lista de cursos en 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>
Categoría de clase:
public Category()
{
}
public int Id { get; set; }
public string Name { get; set; }
public IEnumerable<Course> Courses { get; set; }
En mi opinión, la propiedad -ListCourses del modelo se ve así:
public ObservableCollection<Category> ListCourses
{
get { return _listCourses; }
private set { SetProperty(ref _listCourses, value); }
}
Mi pregunta es:Cuando elimino un curso de su lista (eliminando un elemento de gridView), ¿gridView no se actualiza ni muestra los datos actuales en la propiedad ListCourses?
eliminar función:
var category = ListCourses.FirstOrDefault(cat => cat.Id == SelectedItem.CategoryId);
category.Courses.Remove(SelectedItem);
OnPropertyChanged("ListCourses");
¿¿Algunas ideas??
Solución
category.Courses
necesita ser un ObservableCollection
también.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow