【问题标题】:Refreshing a listbox in windows phone刷新windows phone中的列表框
【发布时间】:2013-08-10 09:37:21
【问题描述】:

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

   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)
        {

        }

    }

单击刷新按钮后,我正在调用 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>

【问题讨论】:

    标签: windows-phone-7


    【解决方案1】:

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

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

    代码sn-p:

     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;
    

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

    谢谢, 卡马尔。

    【讨论】:

    • 感谢大哥的回复,但是我刷新的时候说item source必须是空的(异常)
    猜你喜欢
    • 2014-04-10
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多