刷新Windows Phone中的列表框

时间:2013-08-10 09:37:21

标签: windows-phone-7

我有一个带有一些图像的列表框。我只想在添加项目后单击刷新按钮后刷新列表框。 这是我的代码。

   public class img
    {
        public BitmapImage Imgs { get; set; }
    }


public void getImages()
    {
        try
        {
            MediaLibrary mediaLibrary = new MediaLibrary();
            var pictures = mediaLibrary.Pictures;
            foreach (var picture in pictures)
            {
                BitmapImage image = new BitmapImage();
                image.SetSource(picture.GetImage());
                img mediaImage = new img();
                mediaImage.Imgs = image;
                imageList.Items.Add(mediaImage);
            }

        }
        catch (Exception ex)
        {

        }

    }

点击刷新按钮后iam调用get images(),但它无效... 有可能没有可观察的收集。 这是我的xaml ==

<ScrollViewer x:Name="Sc" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto" Height="550" >
           <ListBox Name="imageList" Height="617"  HorizontalAlignment="Left" Style="{StaticResource ListBoxStyle1}" SelectionChanged="imageList_SelectionChanged" >

                    <ListBox.ItemTemplate>

                    <DataTemplate>
                          <Image Source="{Binding Imgs}" Width="100" Height="100"/>

                    </DataTemplate>

                </ListBox.ItemTemplate>
                </ListBox>
        </ScrollViewer>

1 个答案:

答案 0 :(得分:0)

当您尝试刷新列表框时,您正在调用getImages()方法,该方法仍将再次添加列表以及现有列表。这将在列表框中创建重复的项目。

刷新时更新列表框的最佳解决方案是将集合绑定到Listbox.ItemSource。如果您不想使用Observable集合和INotifyProperty Changed接口,那么当您从后面的代码刷新数据时,至少应该将集合设置为ListBox.ItemSource。

代码段:

 MediaLibrary mediaLibrary = new MediaLibrary();
 var pictures = mediaLibrary.Pictures;

List<img> Images = new List<img>();

            foreach (var picture in pictures)
            {
                BitmapImage image = new BitmapImage();
                image.SetSource(picture.GetImage());
                img mediaImage = new img();
                mediaImage.Imgs = image;
                Images.Items.Add(mediaImage);
            }
imageList.ItemsSource = Images;

希望这可以帮助您解决问题。如果它可以解决您的问题,请标记为答案。

谢谢, 哈拉。