2012-05-09 32 views
3

我的自定义图片框包含滚动查看器和图片。 依赖属性字符串类型的图像用于设置图像。图片未在自定义图片框中刷新

public static DependencyProperty ImageProperty = DependencyProperty.Register(
"Image", typeof(string), typeof(CustomPictureBox), new FrameworkPropertyMetadata("", new PropertyChangedCallback(OnImageChanged))); 


private static void OnImageChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
{ 
    CustomPictureBox cpb = (CustomPictureBox)d; 
    if (e.Property == ImageProperty) 
    { 
    string newvalue = e.NewValue as string; 
    if (!(string.IsNullOrEmpty(newvalue))) 
    { 
     var bmp = new BitmapImage(); 
     bmp.BeginInit(); 
     bmp.UriSource = new Uri(newvalue); 
     bmp.CacheOption = BitmapCacheOption.OnLoad; 
     bmp.EndInit(); 

     cpb.imgPicture.Source = bmp; 
    } 
    else 
     cpb.imgPicture.Source = null; 
    } 
} 

的图像被经由图像采集获取并存储到给定的位置,名称为“camera_image.tif”。 Image属性设置为该文件名。 当我开始新的图像采集时,我通过绑定将图像属性设置为null,图片框更新为不显示图像。 完成图像采集后,我再次将其设置为“camera_image.tif”。问题是新图像从不出现。相反,它始终是图片框中显示的第一个获取的图像。当我检查图像文件时,它包含新内容。

如何获取图片框来刷新图片?

问候,

tabina

+0

您是否删除了CacheOption?摆脱整条线; 'bmp.CacheOption = BitmapCacheOption.OnLoad;' –

+0

如果我这样做了,第二个图像采集将失败,因为它无法将其结果写入文件“camera_image.tif”。 – tabina

+0

我希望用户能够1)获取图像,2)通过显示给他,检查它是否正常,3)如果可以:触发保存到不同的文件位置,4)如果不是好的:再次尝试并获取另一个图像... – tabina

回答