Get Bounded item from ListView

image_pdfimage_print


   
  
<Window x:Class="WpfApplication1.Window1"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Window.Resources>
    <XmlDataProvider x:Key="MyData" XPath="/Info">
      <x:XData>
        <Info xmlns="">
          <Song Name="Song 1" Artist="Artist 1"/>
          <Song Name="Song 2" Artist="Artist 2"/>
          <Song Name="Song 3" Artist="Artist 1"/>
        </Info>
      </x:XData>
    </XmlDataProvider>
    <Style x:Key="MyContainer" TargetType="{x:Type ListViewItem}">
      <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="true">
          <Setter Property="Cursor" Value="Hand"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsSelected" Value="true" />
            <Condition Property="Selector.IsSelectionActive" Value="true" />
          </MultiTrigger.Conditions>
          <Setter Property="Foreground" Value="Red" />
        </MultiTrigger>
      </Style.Triggers>
    </Style>
    <DataTemplate x:Key="FirstCell">
      <StackPanel Orientation="Horizontal">
        <CheckBox IsChecked="{Binding Path=IsSelected,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/>
      </StackPanel>
    </DataTemplate>
  </Window.Resources>
  <StackPanel>
    <ListView ItemsSource="{Binding Source={StaticResource MyData}, XPath=Song}" 
           ItemContainerStyle="{StaticResource MyContainer}" 
           SelectionChanged="mySelectionChanged"
           SelectionMode="Single" 
           Name="myPlaylist">
      <ListView.View>
        <GridView>
          <GridViewColumn CellTemplate="{StaticResource FirstCell}" Width="30"/>
          <GridViewColumn Header="Name" DisplayMemberBinding="{Binding XPath=@Name}" Width="80"/>
          <GridViewColumn Header="Artist"  DisplayMemberBinding="{Binding XPath=@Artist}" Width="80" />
        </GridView>
      </ListView.View>
    </ListView>
    <TextBlock Margin="20" Name="NowPlaying"/>
  </StackPanel>
</Window>

//File:Window.xaml.cs

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Media;
using System.Windows.Shapes;
using System.Windows.Controls.Primitives;
using System.Collections.ObjectModel;
using System.Xml;


namespace WpfApplication1
{
    public partial class Window1 : Window
    {
      void mySelectionChanged(object sender, SelectionChangedEventArgs e){            
         XmlElement mySelectedElement = (XmlElement)myPlaylist.SelectedItem;
         NowPlaying.Text = mySelectedElement.GetAttribute("Name").ToString() + " by " +mySelectedElement.GetAttribute("Artist").ToString();
      }   
    }
}