Получить содержимое нажатой кнопки из списка в виде кнопки, привязанного к XML
Привет, у меня есть список, связанный с файлом XML, и каждый элемент, который я дал им шаблон данных кнопки, чтобы я мог легко зарегистрировать событие щелчка для каждого элемента.
Я хотел бы получить содержание нажатой кнопки, чтобы выполнить какой-либо запрос.
Вот мой код
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>
После нескольких часов поисков решений. Я знаю, что должен использовать отправителя из события click, и это нормально работало для обычной кнопки, здесь ничего не сказано.
private void keyword_Click(Object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
String keyword = btn.Content.ToString();
MessageBox.Show(keyword);
}
Окно сообщения показывало "System.Xml.XmlElement". Вместо содержимого кнопки.
Большое спасибо всем, кто мог бы помочь мне в этом. Я трачу так много на это, и я могу догадаться, что решение - это просто однострочный код.
2 ответа
Приведите содержимое кнопки к System.Xml.XmlElement. Затем используйте свойство InnerText этого элемента. Или, возможно, вам придется проделать еще несколько операций, чтобы добраться до текста. Это зависит от того, как ваш XML-файл построен.
Rq: когда мне нужно выделить несколько идентичных элементов управления в коде, я использую теги. Так что я могу устанавливать контент и тег самостоятельно (требуется для многоязычных приложений) или даже использовать 'tag-logic' при выборе тега (префикс / суффикс, индекс, ...), что упрощает обработку в коде.
Я знаю, что вы получили ответ, но это другой тип, чтобы получить содержимое кнопки.
private void keyword_Click(Object sender, RoutedEventArgs e)
{
var keyword= (e.Source as Button).Content.ToString();
MessageBox.Show(keyword);
}