this is how I did it <Window x:Class="WindowsApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowsApplication1" Height="300" Width="500" Loaded="OnLoaded" >
<Grid Width="400"> <Grid.Resources> <XmlDataProvider x:Key="InventoryData" XPath="Inventory/Books"> <x:XData> <Inventory xmlns=""> <Books> <Book ISBN="0-7356-0562-9" Stock="in" Number="9"> <Title>XML in Action</Title> <Summary>XML Web Technology</Summary> </Book>
<Book ISBN="0-7356-1370-2" Stock="in" Number="8"> <Title>Programming Microsoft Windows With C#</Title> <Summary>C# Programming using the .NET Framework</Summary> </Book> <Book ISBN="0-7356-1288-9" Stock="out" Number="7"> <Title>Inside C#</Title> <Summary>C# Language Programming</Summary> </Book> <Book ISBN="0-7356-1377-X" Stock="in" Number="5"> <Title>Introducing Microsoft .NET</Title>
<Summary>Overview of .NET Technology</Summary> </Book> <Book ISBN="0-7356-1448-2" Stock="out" Number="4"> <Title>Microsoft C# Language Specifications</Title> <Summary>The C# language definition</Summary> </Book> </Books> </Inventory> </x:XData> </XmlDataProvider>
<DataTemplate x:Key="res1"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding XPath=@Number}"></TextBlock> <Button >click here</Button> </StackPanel> </DataTemplate> </Grid.Resources> <ListView Button.Click="clicked1" Width="400" ItemsSource="{Binding Source={StaticResource InventoryData}, XPath=Book}" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="0,20,0,0" Name="myListView2" > <ListView.View> <GridView> <GridViewColumn Header="ISBN" DisplayMemberBinding="{Binding XPath=@ISBN}" /> <GridViewColumn Header="Stock" DisplayMemberBinding="{Binding XPath=@Stock}" /> <GridViewColumn Header="Number" CellTemplate="{StaticResource res1}"/>
</GridView> </ListView.View> </ListView> </Grid> </Window> private DependencyObject GetDependencyObjectFromVisualTree(DependencyObject startObject, Type type) { //Iterate the visual tree to get the parent(ItemsControl) of this control DependencyObject parent = startObject;
while (parent != null) { if (type.IsInstanceOfType(parent)) break; else parent = VisualTreeHelper.GetParent(parent); } return parent; } void clicked1(object sender, RoutedEventArgs e) { ListViewItem lvi = GetDependencyObjectFromVisualTree(e.OriginalSource as DependencyObject, typeof(ListViewItem)) as ListViewItem; System.Xml.XmlElement ele = (System.Xml.XmlElement)lvi.Content; MessageBox.Show("you clicked " + ele.Attributes["ISBN"].Value); } |