以下に示すように、ItemsControl ブロックに写真のリストがあります。
<ItemsControl Name="icAvatars">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Grid>
<TextBlock Visibility="{Binding LdVis}" Text="Loading... "/>
<TextBlock Visibility="{Binding ErrVis}" Text="Error while loading the image."/>
<Image Source="{Binding ImgSrc}" Visibility="{Binding ImgVis}"/>
</Grid>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
新しい画像をリストに追加する必要がある場合はいつでも、オブジェクトが Avatar クラスからインスタンス化され、リストに追加されます。
public class Avatar
{
public BitmapImage ImgSrc { get; set; }
public Visibility LdVis { get; set; }
public Visibility ImgVis { get; set; }
public Visibility ErrVis { get; set; }
}
Avatar avatar = new Avatar();
var bitmap = new BitmapImage(new Uri(uri));
bitmap.ImageOpened += (s, e) => avatar.ShowImage();
avatar.ImgSrc = bitmap;
icAvatars.Items.Add(avatar);
問題は、画像が読み込まれ、可視性プロパティを (avatar.ImgVis を使用して) 変更しようとすると、アバター オブジェクトの変更が実際の画像に反映されないように見えることです。なぜこれが起こるのですか?