我有一个CarouselView带有标签的DataTemplate. 每次CarouselView更改内部显示的元素时,位于外部的 Image 控件的 ImageSource 属性CarouselView都会更新
从列表中CarouselView获取内容
List<FraseClass> ListaFrasi = new List<FraseClass>
public class FraseClass : ViewModelBase
{
private ImageSource _ImgSource;
public ImageSource ImgSource
{
get { return _ImgSource; }
set
{
_ImgSource = value;
RaisePropertyChanged("ImgSource");
}
}
}
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
XAML
<ff:CachedImage x:Name="ImgFrase" Scale="2" FadeAnimationEnabled="True" DownsampleToViewSize="True" />
C#:
private void CurrentItemChanged (object sender, CurrentItemChangedItemArgs e)
{
if (ListaFrasi[Index].ImgSource == null)
{
string LinkImg = "ftp://epiz_27426656@ftpupload.net/htdocs/ImgSfondo/" + DateTime.Now.AddDays(-Index).DayOfYear + ".jpg";
byte[] ImgByte = WebLcient.DownloadData(LinkImg);
MemoryStream mStream = new MemoryStream(ImgByte);
ListaFrasi[Index].ImgSource = ImageSource.FromStream(() => mStream);
ImgFrase.Source= ImageSource.FromStream(() => mStream);
}
else
{
ImgFrase.Source = ListaFrasi[Index].ImgSource;
}
}
如果列表中的对象在属性中没有值,请下载图像并且代码可以正常工作,如果该对象在属性中已经有数据,我尝试显示图像,但实际上相同的图像继续被显示