Tag属性的常见用途

时间:2009-06-29 14:29:03

标签: c# wpf winforms silverlight

我已经开始使用这个很多来将我的UI元素链接到他们的数据支持类(无论可能是什么)。您将Tag属性用于哪些常见用途?

确实,你根本使用它吗?我知道我很久没有了。

4 个答案:

答案 0 :(得分:10)

正如您所描述的那样,我在WinForms,WPF和Silverlight中使用的Tag属性的最频繁使用是指示控件所涉及的真实数据。这在ListViewItem实例或自动生成的用户界面上特别有用,在这些实例中,您希望对只有目标数据不同的多个对象使用相同的事件处理程序(即要执行的操作保持不变)。

但是,我还使用Tag来存储枚举值(尽管你应该避免使用值类型,因为它会在将值赋给Tag属性时导致装箱)或者是一个字符串。然后用于确定需要执行的操作而不是执行它的数据,并且在一个特定用法中,我存储了一个委托,以便我可以自动生成一些按钮并将其处理程序嵌入{{1} (处理程序信息以数据驱动的方式提供)。

我确信还有很多其他方法可以使用Tag和许多其他方法来替换Tag与更强类型的用法,但这就是我使用它的方式。

答案 1 :(得分:3)

这有点像kludge。它通常用于例如TreeView以将节点链接到数据元素。

但我不会过度使用它,因为它非常公开且不够灵活。请注意,您几乎总是可以使用Dictionary< Control,ValueType>相反,并且有更多的控制方式。

答案 2 :(得分:3)

我一直使用ListViews和TreeViews。它使得尝试更轻松地找到基础数据更多。事实上,我不确定如何在没有它的情况下制作可读的Winforms应用程序。

在运行时创建ContextMenus时我也经常使用它。我将一个对象填充到每个ToolStripMenuItem的Tag成员中,然后我可以使用相同的方法指向每个菜单项的单击处理程序。它会导致更少的代码。

我只是希望它不需要那么多的演员。

答案 3 :(得分:2)

Tag属性是一种古老的(用编程语言术语)保留控件。据我所知,它已被用于从visual basic,delphi和几乎任何其他基于gui的语言的所有内容。

它只是一个额外的属性,允许您为控件的任何原因添加数值。

我已经看到它用于从计数器到控制绑定的记录ID的所有内容。