get clicked button content from button styled listbox binded to xml

MartinLee picture MartinLee · Jul 10, 2012 · Viewed 7.2k times · Source

Hi I have a listbox binded to a xml file, and each item I gave them a button data template so I can easily register a click event to each item.

I would love to get the clicked button's content to do some query on.

Here is my code

XAML

<ListBox  Name="listBox1" >
        <ListBox.ItemsSource>
            <Binding Source="{StaticResource keywordLib}" XPath="Position/Keyword/Word"/>
        </ListBox.ItemsSource>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Button Content="{Binding}" Click="keyword_Click"/>
            </DataTemplate>
        </ListBox.ItemTemplate>

    </ListBox>

After hours of googling for solutions. I know I should use sender from the click event, and that worked fine for a normal button, didn't word here.

    private void keyword_Click(Object sender, RoutedEventArgs e)
    { 
       Button btn = (Button)sender;
       String keyword = btn.Content.ToString();
       MessageBox.Show(keyword);
     }

The messagebox showed "System.Xml.XmlElement". Instead of the button content.

Many thanks to anyone could help me out on this. I spend so much on this, and I could guess the solution is just one line code.

Answer

Sabyasachi Mishra picture Sabyasachi Mishra · Apr 3, 2015

I know you got the answer but, this is another type to get the content of button.

    private void keyword_Click(Object sender, RoutedEventArgs e)
    { 
       var keyword= (e.Source as Button).Content.ToString();
       MessageBox.Show(keyword);
     }