Get Bounded item from ListView
<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();
}
}
}
Related examples in the same category