使用数据库中保存的路径刷新图像

时间:2013-06-03 09:50:58

标签: wpf image dataset refresh

您好。这是C#中的Visual Studio 2010。我使用以下方法上传了一个图像路径。路径已成功存储在数据库中,并显示上载的图像。但是,尽管导航了其他记录,但上传的图像仍会显示。未检索到其他图像,仅保留上传的图像。我在保存后尝试再次重新填充数据集,但它给出了错误:“URI为空”。除路径(photo_text.Text)之外的图像成功刷新其他文本字段。

private void uploadPhoto_Click(object sender, RoutedEventArgs e)
{
    Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
    ofd.FileName = ".jpg";
    ofd.InitialDirectory = "C:\\Users\\Public\\Pictures";
    ofd.Title = "Select passport photo to upload";
    ofd.Filter = "Image Files (*.JPG)|*.jpg|All files (*.*)|*.*";

    if (ofd.ShowDialog() == true)
    {
        pixx.Source = new BitmapImage(new Uri(ofd.FileName));
        photo_text.Text = ofd.FileName;
    }
}

第二种方法:

if (studentsDataSetstudentTableAdapter.Update(studentsDataSet.student) > 0)
{
    MessageBox.Show("Your data has been saved!", "DATA STATUS", MessageBoxButton.OK, MessageBoxImage.Information);
    studentsDataSetstudentTableAdapter.Fill(studentsDataSet.student);
    pixx.Source = new BitmapImage(new Uri(photo_text.Text));
}

2 个答案:

答案 0 :(得分:0)

在图像的图像属性中,源数据绑定到有选项的数据中的数据,“模式”应设置为“ TwoWay ”和“UpdateSourceTrigger”为“的的PropertyChanged ” 每次翻阅记录时图像都会改变!

答案 1 :(得分:0)

我有同样的问题。当我加载图像出现并写得很好。但是当我站在另一个寄存器中时,每个人的图像都是一样的。 在XAML中,我指示了Robert Omete,但是当我使用Mode = TwoWay或OneWayToSource时,没有图像显示为空白。

加载图片代码:

    private void BtnCargarFoto_Click(object sender, RoutedEventArgs e)
    {
        OpenFileDialog OD = new OpenFileDialog();
        OD.Filter = "jpg(*.jpg)|*.jpg|png(*.png)|*.png|gif(*.gif)|*.gif|bmp(*.bmp)|*.bmp|All Files(*.*)|*.*";
        if (OD.ShowDialog() == true)
        {
            using (Stream stream = OD.OpenFile())
            {
                //bitCoder = BitmapDecoder.Create(stream, BitmapCreateOptions.PreservePixelFormat,
                //    BitmapCacheOption.OnLoad);
                bitCoder = BitmapDecoder.Create(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
                ImgFoto.Source = bitCoder.Frames[0];
            }
            System.IO.FileStream fs = new System.IO.FileStream(OD.FileName, System.IO.FileMode.Open);
            foto = new byte[Convert.ToInt32(fs.Length.ToString())];
            fs.Read(foto, 0, foto.Length);
        }
    }

XAML:

            <Image x:Name="ImgFoto" Source="{Binding Foto, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}"   Stretch="Fill" HorizontalAlignment="Left" 
                   Height="127" Margin="38,29,0,0" VerticalAlignment="Top" Width="176">
            </Image>