Как вы описываете, наиболее частое использование свойства Tag
, с которым я сталкивался и использую в WinForms, WPF и Silverlight, - это отображение реальных данных, к которым относится элемент управления. Это особенно полезно в ListViewItem
экземплярах или автоматически сгенерированном пользовательском интерфейсе, где вы хотите использовать один и тот же обработчик событий для нескольких объектов, в которых различаются только целевые данные (т. Е. Выполняемое действие остается тем же).
Тем не менее, я также использовал Tag
для хранения значения перечисления (хотя следует избегать типов значений, так как это приведет к боксу при назначении значения свойству Tag
) или строку, которая затем используется для определения действие, которое нужно выполнить вместо данных, для которых оно выполняется, и в одном конкретном случае я сохранил делегат, чтобы я мог автоматически сгенерировать некоторые кнопки и встроить их обработчики в Tag
(информация об обработчике была предоставляется в режиме данных).
Я уверен, что есть много других способов использования Tag
и много других способов заменить использование Tag
чем-то более строго типизированным, но я так и использовал.