Как отобразить растровое изображение в элементе управления изображением на WPF с помощью C # - PullRequest
2 голосов
/ 23 декабря 2009

Я хочу, чтобы при двойном щелчке по строке в 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 ]

1 голос
/ 23 декабря 2009

Они имеют ключ для получения индекса строки, по которому щелкнули, и получения 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; 
    }

Надеюсь, это поможет

0 голосов
/ 24 декабря 2009

Предположим, что:

  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));
...