Получить содержимое нажатой кнопки из списка в виде кнопки, привязанного к 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);
     }
Другие вопросы по тегам