我正在创建一个UWP应用,其中使用AdaptiveGridView控件来显示项目列表。
当我第一次设置AdaptiveGridView的ItemsSource时,一切都按预期工作,并且看到了呈现的列表。
但是,如果我尝试将新项目添加到AdaptiveGridView的ItemsSource属性中,则不会显示该新项目。但是当检查ItemsSource时,我可以看到确实添加了新项目,但是它没有显示出来。
解决此问题的唯一方法是,首先将ItemsSource属性设置为null,然后使用新项再次将其设置。
<Page.Resources>
<DataTemplate x:Key="Items">
<Grid Name="GoalCardGrid">
<!--UI stuff-->
</Grid>
</DataTemplate>
</Page.Resources>
<StackPanel Margin="10,0,10,0">
<UI:AdaptiveGridView Margin="0,20,0,0" HorizontalAlignment="Stretch" Grid.Row="2" x:Name="ItemsGV"
ItemHeight="250" DesiredWidth="700" ItemTemplate="{StaticResource Items}">
</UI:AdaptiveGridView>
</StackPanel>
public static List<Item> Items = new List<Item>();
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
Items.Add(new Item()
{
ImageUrl = "ms-appx:///Assets/download (1).jpeg"
});
Items.Add(new Item()
{
ImageUrl = "ms-appx:///Assets/download (2).jpeg"
});
ItemsGV.ItemsSource = Items;
}
private void AddGoalBtn_Click(object sender, RoutedEventArgs e)
{
Items.Add(new Item()
{
ImageUrl = "ms-appx:///Assets/download (1).jpeg"
});
ItemsGV.ItemsSource = null;
ItemsGV.ItemsSource = Items;
}
当我添加新项目时,应该显示这些新项目,但是没有,我不得不
答案 0 :(得分:0)
List类尚未实现INotifyPropertyChanged Interface ,在其中添加新项目时,它将通知UI。
要解决您的问题,请使用ObservableCollection。
using System.Collections.ObjectModel;
public static ObservableCollection<Item> Items = new ObservableCollection<Item>();