如何使用C#在WPF上的图像控件中显示位图图像

时间:2009-12-22 23:02:59

标签: wpf listview bitmapimage

我希望当我双击ListView中的某一行时,它应显示与该行对应的Image。该行还包含Image的路径。

我尝试了以下操作,但它为所有行显示相同的Image,因为我已经为特定的Image提供了路径:

private void ListViewEmployeeDetails_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    ImageSource imageSource = new BitmapImage(new Uri(@"C:\northwindimages\king.bmp"));
    image1.Source = imageSource;
}

请提出建议。

2 个答案:

答案 0 :(得分:1)

它们的关键是检索单击的行索引,并获取该行的图像URL。由于您说您正在点击该行,因此可以使用类似于以下方法的方法完成此操作

private void ListViewEmployeeDetails_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
    {
        DataRow row = (DataRow)sender; //Get the row that was clicked
        string imageURL = row["imageUrl"].ToString();//Get the img URL for that row
        ImageSource imageSource = new BitmapImage(new Uri(imageURL));
        image1.Source = imageSource; 
    }

希望这有帮助

答案 1 :(得分:0)

假设:

  1. 您要绑定的列表包含Elephant对象,
  2. 您希望图像在双击项目时显示Elephant.Picture。
  3. 您可以按如下方式设置事件处理程序中的图像:

    private void ListViewEmployeeDetails_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
      var viewItem = sender as ListViewItem;
      if(viewItem!=null)
      {
        var elephant = viewItem.DataContext as Elephant;
        image1.Source = elephant.Picture;
      }
    }
    

    请注意,只接受对ListViewItem的双击。

    上面的代码假设elephant.Picture是ImageSource类型。如果它是其他东西你将不得不转换它。例如,如果Elephant具有字符串“PicturePath”属性,则image1.Source行将更改为:

        image1.Source = new BitmapImage(new Uri(elephant.PicturePath));