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>

经过数小时的谷歌搜索解决方案。我知道我应该使用 click 事件中的 sender ,这对于普通按钮来说效果很好,这里没有说明。

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

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

非常感谢任何人都可以帮助我解决这个问题。我在这方面花了很多钱,我猜想解决方案只是一行代码。

4

2 回答 2

5

我知道你得到了答案,但这是另一种获取按钮内容的类型。

    private void keyword_Click(Object sender, RoutedEventArgs e)
    { 
       var keyword= (e.Source as Button).Content.ToString();
       MessageBox.Show(keyword);
     }
于 2015-04-03T08:48:04.680 回答
2

将按钮的内容转换为 System.Xml.XmlElement。然后使用该元素的 InnerText 属性。或者,您可能需要进行更多操作才能获得您的文本。这取决于您的 XML 文件是如何构建的。

Rq:当我需要区分代码中几个相同的控件时,我使用标签。所以我可以独立设置内容和标签(多语言应用程序需要。)甚至在选择标签(前缀/后缀,索引,...)时使用“标签逻辑”,这简化了代码处理。

于 2012-07-10T00:19:20.797 回答