前台
<ListBox x:Name="listbox1" Margin="6"> <ListBox.ItemTemplate> <DataTemplate> <Grid Margin="15" Tag="{Binding ImageID}" Tap="Post_Click"> <StackPanel Orientation="Horizontal"> <Image Source="{Binding Image}" Width="150" Height="120" Stretch="Fill"/> <TextBlock Text="{Binding ImageName}" FontSize="30" TextWrapping="Wrap" Width="300"/> </StackPanel> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
后台
private T FindFirstElementInVisualTree<T>(DependencyObject parentElement) where T : DependencyObject { var count = VisualTreeHelper.GetChildrenCount(parentElement); if (count == 0) return null; for (int i = 0; i < count; i++) { var child = VisualTreeHelper.GetChild(parentElement, i); if (child != null && child is T) { return (T)child; } else { var result = FindFirstElementInVisualTree<T>(child); if (result != null) return result; } } return null; }
需要绑定
private void Post_Click(object sender, System.Windows.Input.GestureEventArgs e) { var selectedIndex = listbox1.SelectedIndex; ListBoxItem item = listbox1.ItemContainerGenerator.ContainerFromIndex(selectedIndex) as ListBoxItem; StackPanel border = FindFirstElementInVisualTree<StackPanel>(item); Image img = FindFirstElementInVisualTree<Image>(item); TextBlock txtBlock = FindFirstElementInVisualTree<TextBlock>(item); MessageBox.Show(txtBlock.Text.ToString()); }