您好我有一个绑定到xml文件的列表框,每个项目我都给了他们一个按钮数据模板,这样我就可以轻松地为每个项目注册一个click事件。
我希望点击按钮的内容进行一些查询。
这是我的代码
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”。而不是按钮内容。
非常感谢任何人可以帮助我解决这个问题。我在这方面花了很多钱,我猜测解决方案只是一行代码。
答案 0 :(得分:2)
我知道你得到了答案但是,这是获取按钮内容的另一种类型。
private void keyword_Click(Object sender, RoutedEventArgs e)
{
var keyword= (e.Source as Button).Content.ToString();
MessageBox.Show(keyword);
}
答案 1 :(得分:0)
将按钮的内容强制转换为System.Xml.XmlElement。然后使用此元素的InnerText属性。或者你可能需要做更多的操作来获取你的文字。这取决于您的XML文件的构建方式。
Rq:当我需要在代码中区分几个相同的控件时,我使用标签。所以我可以独立设置内容和标签(多语言应用程序所需)。甚至在选择标签(prefixe / suffixes,index,...)时使用'tag-logic'来简化代码处理。