2013-08-01 52 views
0

我綁定的物品如下:如何在silverlight中獲取partular標籤元素的圖像?

<ScrollViewer> 
     <ItemsControl x:Name="UserList"> 
      <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
      <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Image Source="{Binding imageurl}" 
         Tag="{Binding Path=id}" Width="164" Height="150" 
         Margin="4" Stretch="Fill"></Image> 

      </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </ScrollViewer> 

Code.cs: 


    List.Add(new StackImages { id = "1", Name="test",type="test",price ="testprice" ,imageurl = new Uri(this.BaseUri, @"Assets/acservice.png") }); 
    List.Add(new StackImages { id = "2", imageurl = new Uri(this.BaseUri, @"Assets/brakes.png") }); 
    List.Add(new StackImages { id = "3", imageurl = new Uri(this.BaseUri, @"Assets/carwash.png") }); 
    List.Add(new StackImages { id = "4", imageurl = new Uri(this.BaseUri, @"Assets/oilchange.png") }); 
    List.Add(new StackImages { id = "5", imageurl = new Uri(this.BaseUri, @"Assets/transmission.png") }); 
    UserList.ItemsSource= List; 

請告訴我如何獲得特定的標籤值時,就可以了自來水的particulat IMAGEURL?

+0

我正在添加名稱,類型,價格值也列出。如何得到?我不綁定這些元素在UI.check我的編輯代碼。 – user1237131

回答

1

基於answer given to your previous question您有兩種選擇。要麼你訪問圖像控制的Source屬性,並將其轉換爲BitmapImage(這是WPF創建的自動類型轉換,從UriImageSource):

private void MyTapHandler(Object sender, EventArgs e) 
{ 
    Image image = (Image)sender; 
    BitmapImage bitmap = (BitmapImage)image.Source; 
    Uri uri = bitmap.UriSource; 
} 

或者你訪問StackImage對象在圖像的DataContext

private void MyTapHandler(Object sender, EventArgs e) 
{ 
    Image image = (Image)sender; 
    StackImage stackImage = (StackImage)image.DataContext; 
    Uri uri = stackImage.imageurl; 
} 
0

您可能想要做的是從選擇從列表中選擇一項。爲了支持選擇,您必須將ItemsControl替換爲ListBox

<ListBox x:Name="UserList" SelectionMode="Single" 
     SelectionChanged="UserList_SelectionChanged"> 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Image Source="{Binding imageurl}" 
        Tag="{Binding Path=id}" Width="164" Height="150" 
        Margin="4" Stretch="Fill"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

現在你可以將一個處理器的SelectionChanged事件,你可能總是被SelectedItemSelectedIndex屬性訪問所選擇的項目。

private void UserList_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var selectedImage = UserList.SelectedItem as StackImage; 
    if (selectedImage != null) 
    { 
     var uri = selectedImage.imageurl; 
    } 
} 
相關問題