WPF:将一些数据附加到按钮

发布于 2024-11-08 15:19:25 字数 142 浏览 0 评论 0原文

问题:

“我正在使用 ControlTemplate 填充 ListView。 在此模板中,每个项目都会有一个按钮,单击该按钮时需要执行某些操作。

我如何访问生成 ListViewItem 的对象,以便我可以获取某些内容(例如 id)。

Problem :

'Im populating a ListView with ControlTemplate.
In this template for each item there will be a button that when clicked need to perform some action.

How i can access the object that generated the ListViewItem so i can fetch something (like a id).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拥有 2024-11-15 15:19:25

DataContext 是你的朋友。每个列表项(以及该项目内的按钮,如果您没有覆盖按钮的 DataContext)都将有一个数据项,用于在 DataContext 属性中生成该项目。

DataContext is your friend. Each list item (and button inside that item if you haven't override button's DataContext) will have a data item which was used to generate the item in DataContext property.

卖梦商人 2024-11-15 15:19:25

如果您要动态创建按钮,则可以使用 Tag 属性附加数据,或继承 Button 类作为 My_Button 并设置属性你需要

以另一种方式 像“userId”
尝试观察单击按钮的 Parent 属性。

例如:

private void Button_Click(object sender, RoutedEventArgs e)
        {
          Button clickedButton = sender as Button;
          ListViewItem holderItem = clickedButton.Parent as ListViewItem;
          Console.WriteLine("You are clicked the buton in " + holderItem.Name);
        }

或内联解决方案:

private void Button_Click(object sender, RoutedEventArgs e)
            {
              Console.WriteLine("You are clicked the buton in " + ((sender as Button).Parent as ListViewItem).Name);
            }

if you are creating buttons dynamicly , you can use the Tag property for attach your data, or inherit the Button class as My_Button and set a Property wich you need like "userId"

in the other way
try watch the Parent property of clicked button.

for example :

private void Button_Click(object sender, RoutedEventArgs e)
        {
          Button clickedButton = sender as Button;
          ListViewItem holderItem = clickedButton.Parent as ListViewItem;
          Console.WriteLine("You are clicked the buton in " + holderItem.Name);
        }

or inline solution:

private void Button_Click(object sender, RoutedEventArgs e)
            {
              Console.WriteLine("You are clicked the buton in " + ((sender as Button).Parent as ListViewItem).Name);
            }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文