2009-06-29 26 views
9

我已經開始使用這種方式將我的UI的元素鏈接到它們的數據支持類(不管可能是什麼)。您將Tag屬性用於哪些常見用途?Tag屬性的常見用法

的確,您是否使用它?我知道我沒有很長時間。

回答

10

正如您所描述的,我遇到並在WinForms,WPF和Silverlight中使用Tag屬性的最常見用法是指出控件所涉及的真實數據。這對於實例或自動生成的用戶界面特別有用,您希望對僅有目標數據不同的多個對象(即要執行的操作保持不變)的多個對象使用相同的事件處理程序。

但是,我也使用Tag來存儲枚舉值(儘管您應該避免使用值類型,因爲在將值分配給Tag屬性時會導致裝箱)或者用於確定操作的字符串需要執行而不是執行它的數據,並且在一個特定的用法中,我存儲了一個委託,以便我可以自動生成一些按鈕並將其處理程序嵌入到Tag中(處理程序信息由數據驅動提供方式)。

我確定有很多其他方式可以使用Tag和許多其他方式來替換使用Tag的更強類型的東西,但這就是我使用它的方式。

+0

代表?我想它應該有,但我甚至從未想到代表也是對象。 – 2009-06-29 14:39:41

+0

立即使用ListViewItem的標籤:在文件夾/文件的層次結構中,我使用標籤來存儲文件的完整路徑,而標題只顯示名稱。 – 2009-06-29 14:40:07

2

標籤屬性是一個古老的(以編程語言術語來說)持有控件。據我所知,它已被用於從visual basic,delphi,以及幾乎任何其他基於gui的語言。

它只是一個額外的屬性,允許您爲控制的任何原因添加數值。

我已經看到它用於從計數器到控件綁定的記錄標識的所有內容。

3

這是一個kludge。它通常用於例如TreeView將節點鏈接到數據元素。

但我不會過度使用它,因爲它是非常公開的,不是很靈活。請注意,您幾乎總是可以使用字典< Control,ValueType>來代替,並且具有更多的控制權限。

3

我一直在用ListViews和TreeViews來使用它。它使得試圖找到底層數據更容易。事實上,我不確定如何在沒有它的情況下製作可讀的Winforms應用程序。

在運行時創建ContextMenus時,我也使用它很多。我將一個對象填充到每個ToolStripMenuItem的Tag成員中,然後我可以用相同的方法指出每個菜單項的Click處理程序。它導致代碼少得多。

我只是希望它不需要這麼多的鑄造。