从绑定到XML的按钮样式列表框中获取被点击的按钮内容

3

你好,我有一个绑定到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>

经过数小时的搜索解决方案,我知道应该使用来自点击事件的发送器,对于普通按钮这很有效,但在这里并没有奏效。

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

消息框显示的是“System.Xml.XmlElement”,而不是按钮内容。

非常感谢任何能够帮助我的人。我在这上面花费了很多时间,但我猜解决方案只需要一行代码。

2个回答

5
我知道你已经得到了答案,但这是另一种获取按钮内容的方法。
    private void keyword_Click(Object sender, RoutedEventArgs e)
    { 
       var keyword= (e.Source as Button).Content.ToString();
       MessageBox.Show(keyword);
     }

2
将按钮内容转换为System.Xml.XmlElement。然后使用此元素的InnerText属性。或者您可能需要执行更多操作才能获得文本。这取决于XML文件的构建方式。
备注:当我需要在代码中区分几个相同的控件时,我使用标签。因此,我可以独立设置内容和标签(对于多语言应用程序是必需的),甚至在选择标签时使用“标签逻辑”(前缀/后缀、索引等),以简化代码处理。

非常感谢您的帮助。InnerText属性起作用了!您节省了我好几个小时,非常感谢您。 - MartinLee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接