سؤال

أقوم بتطوير تطبيق لمتجر Windows (نمط MVVM) باستخدام C#/XAML.العرض الحالي لعرض الفئات مع قائمة الدورات التدريبية الخاصة بها، كما هو موضح أدناه.

<CollectionViewSource x:Name="groupedItemsViewSource"
                      Source="{Binding Path=ListCourses}"
                      IsSourceGrouped="true"
                      ItemsPath="Courses" />

قائمة الدورات في 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>

فئة الفصل:

public Category()
{

}
public int Id { get; set; }

public string Name { get; set; }


public IEnumerable<Course> Courses { get; set; }

في نموذج العرض الخاص بي -ListCourses الخاصية تبدو كما يلي:

public ObservableCollection<Category> ListCourses
{
    get { return _listCourses; }
    private set { SetProperty(ref _listCourses, value); }
}

سؤالي هو:عندما أقوم بإزالة دورة تدريبية من قائمتها (إزالة العنصر منgridView) لا يتم تحديث GridView وإظهار البيانات الحالية في خاصية ListCourses؟؟

إزالة الوظيفة:

     var category = ListCourses.FirstOrDefault(cat => cat.Id == SelectedItem.CategoryId);
        category.Courses.Remove(SelectedItem);
        OnPropertyChanged("ListCourses");

أيه أفكار؟؟

هل كانت مفيدة؟

المحلول

category.Courses يجب أن يكون ObservableCollection أيضاً.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top