AdaptiveGridView中的双向数据绑定

时间:2019-05-31 23:44:22

标签: c# xaml uwp

我正在创建一个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;
    }

当我添加新项目时,应该显示这些新项目,但是没有,我不得不

1 个答案:

答案 0 :(得分:0)

List类尚未实现INotifyPropertyChanged Interface ,在其中添加新项目时,它将通知UI。

要解决您的问题,请使用ObservableCollection

using System.Collections.ObjectModel;
public static ObservableCollection<Item> Items = new ObservableCollection<Item>();