2

我希望当我双击中的一行时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;
}

请提出一些建议。

4

2 回答 2

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; 
    }

希望这可以帮助

于 2009-12-23T01:31:47.990 回答
0

假设:

  1. 您绑定到的列表包含 Elephant 对象,并且,
  2. 当您双击一个项目时,您希望图像显示 Elephant.Picture。

您可以从事件处理程序中设置图像,如下所示:

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));
于 2009-12-24T01:22:46.897 回答