2012-01-25 16 views
3

我有一個派生自TreeviewItem(自定義TreeViewItem)的類,它由Treeview(自定義Treeview控件)派生的類使用。
當我的控件的用戶使用默認設計時集合編輯器將項目添加到我的自定義TreeView時,我希望新添加的項目具有默認名稱(如MyNode1,MyNode2等),我希望用XAML編寫。
關於如何做到這一點的任何想法?
我注意到,當你從工具箱中刪除一個控件時,它有一個默認名稱分配給它。如果可能的話,我想在Visual Studio 2010中重用這個現有的機制,以用於我的樹節點類。爲自定義TreeViewItem自動生成名稱

+1

這當然不是你需要的答案,但似乎很難。這可能意味着某種VS插件爲您寫入Name屬性。順便說一句,爲什麼你需要在每個節點的名稱? – NestorArturo

+0

在Blend中,有一個選項「自動命名創建交互式元素」,但我不認爲Visual Studio具有相同的選項。 [鏈接](http://msdn.microsoft.com/en-us/library/gg413373.aspx#ExpressionBlend) – theartwebreathe

+0

爲什麼?如果您根據名稱對節點進行不同處理,則應在創建節點時花時間指定Id或其他標識符。 – Rachel

回答

1

TreeView s和TreeViewItem s是用戶界面控件,不應該用於存儲任何需要保存的信息。相反,您應該創建一個分層數據類型來存儲您的信息,將其綁定到TreeView.ItemsSource屬性並提供一個HierarchicalDataTemplate以隨意顯示數據。

通過這種方式,只需在視圖模型或代碼後面添加新的數據類型對象到綁定集合,即可將新項添加到TreeView。您可以在將對象添加到對象之前將所需的任何值分配給這些對象,並且他們都可以在我的時間從該對象中訪問。

+0

在一個正常的應用程序中,我正面臨的問題是編寫一個自定義控件,它看起來像一個treeView但具有其他複雜的功能。該功能依賴於我的框架中的其他項目。目標是我的控件的用戶只是將它拖到他的頁面上,設置一些屬性,它應該工作。如果他必須做更高級的事情,那麼他也可以編寫一些代碼,但大多數時候,只需使用編輯器編輯XAML中的控件就足夠了。他不必擔心諸如HDT或數據模型背後的複雜細節。 – Rayden

+0

你確定你需要子類'TreeView'嗎?您可以使用「附加屬性」創造奇蹟。如果您有興趣,請參閱此MSDN [文章](http://msdn.microsoft.com/zh-cn/library/ms749011.aspx)。 – Sheridan

+0

從概念上講,我不需要附加屬性,因爲我正在開發一個新的控件(基於treeview),所以我想也保持舊的它在默認狀態 – Rayden