0

アプリに画像のリストがあり、それらはすべてリスト ボックス内にあり、ソースを URL として指定しています。

すべて正常に動作し、指定した URL から画像を表示できます。

画像を変更してリロードすると、ListBoxその変更がその画像に反映されず、新しい画像ではなく古い画像が表示されます。

確かに、画像の変更後、新しい画像の URL をソースにバインドしますが、古い画像が表示されます。なぜこれが起こっているのかわかりません。ここに私のコードがあります

  <ListBox Grid.Row="1" HorizontalAlignment="Left" Margin="0,81,0,0" Name="wishListListBox" VerticalAlignment="Top" Width="480" Visibility="Visible">
        <ListBox.ItemTemplate>
            <DataTemplate>

                    <Image ImageFailed="wishlistImage_ImageFailed_1" x:Name="wishlistImage" HorizontalAlignment="Left" Width="164" Margin="12,54,0,88" Stretch="Fill">
                        <Image.Source>
                            <BitmapImage CreateOptions="DelayCreation,IgnoreImageCache" UriSource="{Binding thumb_image}" />
                        </Image.Source>
                    </Image>

            </DataTemplate>
        </ListBox.ItemTemplate>

    </ListBox>

これが私のイメージのitemsourceを設定する私のクラスです

[DataContract]
public class WishListResponse : INotifyPropertyChanged
{

 [DataMember]
 public List<string> thumb_images { get; set; }

 public string thumb_image
    {
        get
        {
            if (thumb_images.Count != 0)
                return thumb_images[0];
            else
                return "";
        }
        set
        {
            thumb_images[0] = value;
            OnPropertyChanged(thumb_images[0]);
        }
    }
   public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string name)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(name));
        }
    }
 }

私のメインページでは、このようにアイテムソースをバインドします

 public static List<WishListResponse> wishlistList = new List<WishListResponse>();

 wishListListBox.ItemsSource = wishlistList.ToArray();

画像コントロールを更新するのを手伝ってくれる人はいますか? ありがとうございました。

4

4 に答える 4

1

この問題で非常に簡単な解決策を試しましたが、うまくいきました。

画像を更新する必要があるたびに画像リンクを変更しました。つまり、現在の時刻に画像の URL を追加するだけです。

それは私にとってはうまくいきます。

ありがとうございました。

于 2013-09-18T03:55:03.977 に答える
0

コードの変更はxamlに通知されないと思うので、INotifyChangeからクラスを継承してから、プロパティ変更イベントを作成する必要があります...のように

        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

その後、リストのプロパティのセットで

 listname = value;
OnPropertyChanged("listname");

これがあなたに役立つことを願っています....

于 2013-07-17T06:21:52.777 に答える
0

その理由は、モデルが INotifyPropertyChanged を実装していないため、プロパティが変更されたが、これを解決するために画像バインディング プロパティに通知できないためだと思います

1 つは INotifyPropertyChanged を実装しています。

あなたがこのようにできる別の

wishListListBox.ItemsSource =null;
wishListListBox.ItemsSource = itemsSource;

また、リストボックスに新しいアイテムを表示します

しかし、itemsSource が変更されたときに問題が発生します。このようにする必要があります.......

これがあなたに役立つことを願っています

于 2013-07-17T07:35:46.083 に答える