【发布时间】:2009-06-29 14:29:02
【问题描述】:
我已经开始大量使用它来将我的 UI 元素链接到他们的数据支持类(无论是什么)。您将 Tag 属性用于哪些常见用途?
确实,您使用它吗?我知道我已经很久没有这样做了。
【问题讨论】:
标签: c# wpf winforms silverlight
我已经开始大量使用它来将我的 UI 元素链接到他们的数据支持类(无论是什么)。您将 Tag 属性用于哪些常见用途?
确实,您使用它吗?我知道我已经很久没有这样做了。
【问题讨论】:
标签: c# wpf winforms silverlight
正如您所描述的,Tag 属性的最常见用法是我在 WinForms、WPF 和 Silverlight 中遇到并使用的最常见的用法是指示控件所关联的真实数据。这在 ListViewItem 实例或自动生成的用户界面上特别有用,您希望对多个对象使用相同的事件处理程序,其中只有目标数据不同(即要执行的操作保持不变)。
但是,我还使用Tag 来存储枚举值(尽管您应该避免使用值类型,因为在将值分配给Tag 属性时会导致装箱)或用于确定的字符串需要执行的操作而不是执行它的数据,在一种特定的用法中,我存储了一个委托,以便我可以自动生成一些按钮并将它们的处理程序嵌入Tag(处理程序信息是以数据驱动的方式提供)。
我确信还有很多其他方法可以使用Tag,还有很多其他方法可以将Tag 的用法替换为更强类型的东西,但我就是这样使用它的。
【讨论】:
Tag 属性是一种古老的(在编程语言中)用于控件的保留。据我所知,它已被用于从 Visual Basic、delphi 和几乎任何其他基于 gui 的语言中。
它只是一个额外的属性,允许您出于任何原因向控件添加数值。
我已经看到它用于从计数器到保存控件所绑定的记录 id 的所有内容。
【讨论】:
这有点杂乱无章。例如,它通常用于将节点链接到数据元素的 TreeView。
但我不会过度使用它,因为它非常公开且不太灵活。请注意,您几乎总是可以使用 Dictionary 来代替,这样可以拥有更多的控制权。
【讨论】:
我一直将它与 ListViews 和 TreeViews 一起使用。它使尝试查找基础数据更加更容易。事实上,我不确定没有它你将如何制作一个可读的 Winforms 应用程序。
在运行时创建 ContextMenus 时,我也经常使用它。我将一个对象填充到每个 ToolStripMenuItem 的 Tag 成员中,然后我可以将每个菜单项的单击处理程序指向相同的方法。它会减少很多代码。
我只是希望它不需要这么多的演员。
【讨论】: