2009-12-22 93 views
2

我希望當我雙擊ListView中的一行時,它應該顯示對應於該行的Image。該行還包含Image的路徑。如何使用C#在WPF上的圖像控件中顯示位圖圖像

我嘗試以下,但它會顯示所有行相同Image,因爲我已經給出了路徑特定Image

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

請提出好的建議。

回答

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

希望這有助於

+0

此代碼假定您的點擊事件(ListViewEmployeeDetails)被分配給該行,因爲在原始指示帖子。如果是這樣,那麼'發件人'對象表示被點擊的行,並且如圖所示,可以被轉換爲數據行。如果點擊事件沒有附加到行上,而是行中的一個控件..我知道,並且我可以告訴你如何從控件中獲取行。 – PortageMonkey 2009-12-25 15:12:20

0

假設:

  1. 您綁定到列表包含大象物體,並且,
  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類型。如果它是別的東西,你將不得不將其轉換。舉例來說,如果不是大象有一個字符串「PicturePath」屬性,則image1.Source線將變爲:

image1.Source = new BitmapImage(new Uri(elephant.PicturePath)); 
相關問題