我有一個派生自TreeviewItem(自定義TreeViewItem)的類,它由Treeview(自定義Treeview控件)派生的類使用。
當我的控件的用戶使用默認設計時集合編輯器將項目添加到我的自定義TreeView時,我希望新添加的項目具有默認名稱(如MyNode1,MyNode2等),我希望用XAML編寫。
關於如何做到這一點的任何想法?
我注意到,當你從工具箱中刪除一個控件時,它有一個默認名稱分配給它。如果可能的話,我想在Visual Studio 2010中重用這個現有的機制,以用於我的樹節點類。爲自定義TreeViewItem自動生成名稱
回答
TreeView
s和TreeViewItem
s是用戶界面控件,不應該用於存儲任何需要保存的信息。相反,您應該創建一個分層數據類型來存儲您的信息,將其綁定到TreeView.ItemsSource
屬性並提供一個HierarchicalDataTemplate
以隨意顯示數據。
通過這種方式,只需在視圖模型或代碼後面添加新的數據類型對象到綁定集合,即可將新項添加到TreeView
。您可以在將對象添加到對象之前將所需的任何值分配給這些對象,並且他們都可以在我的時間從該對象中訪問。
在一個正常的應用程序中,我正面臨的問題是編寫一個自定義控件,它看起來像一個treeView但具有其他複雜的功能。該功能依賴於我的框架中的其他項目。目標是我的控件的用戶只是將它拖到他的頁面上,設置一些屬性,它應該工作。如果他必須做更高級的事情,那麼他也可以編寫一些代碼,但大多數時候,只需使用編輯器編輯XAML中的控件就足夠了。他不必擔心諸如HDT或數據模型背後的複雜細節。 – Rayden
你確定你需要子類'TreeView'嗎?您可以使用「附加屬性」創造奇蹟。如果您有興趣,請參閱此MSDN [文章](http://msdn.microsoft.com/zh-cn/library/ms749011.aspx)。 – Sheridan
從概念上講,我不需要附加屬性,因爲我正在開發一個新的控件(基於treeview),所以我想也保持舊的它在默認狀態 – Rayden
- 1. 實體框架爲FK關係名稱自定義EDM生成
- 2. 生成自定義自動編號
- 3. 自定義自動生成的ID
- 4. InfoPath表單自動生成名稱
- 5. Django緩存 - 如何生成自定義鍵名稱?
- 6. 如何在wordpress中生成自定義頁面名稱?
- 7. 如何生成自定義輸出文件名稱?
- 8. 如何自定義JAXB如何生成複數方法名稱?
- 9. 自定義生成的模型名稱 - Swagger UI
- 10. Rails會話自定義,動態名稱
- 11. 自動定義工作表名稱
- 12. Jvectormap自定義名稱
- 13. 自定義DataGrid組名稱
- 14. 與自定義名稱
- 15. 展開TreeViewItem自動
- 16. MySQL外鍵自動生成的名稱是確定性的嗎?
- 17. 自定義CAGradientLayer不生成動畫
- 18. 動態定義派生自類屬性名稱的方法?
- 19. RabbitMQ - 名稱爲「amq.gen- *」的隨機隊列正在自動生成
- 20. C# - 自動生成一個名稱爲變量的新屬性
- 21. 爲jquery.ajax生成自定義錯誤()
- 22. Grails:生成自定義ID
- 23. 道場自定義生成
- 24. CDT自定義生成
- 25. 自定義etag生成
- 26. 生成自定義viewflipper
- 27. Rails自定義生成器
- 28. 生成圖表作爲具有自定義名稱的html文件
- 29. Datagrid自動生成的列自定義模板綁定
- 30. 自動生成結構C中的成員名稱
這當然不是你需要的答案,但似乎很難。這可能意味着某種VS插件爲您寫入Name屬性。順便說一句,爲什麼你需要在每個節點的名稱? – NestorArturo
在Blend中,有一個選項「自動命名創建交互式元素」,但我不認爲Visual Studio具有相同的選項。 [鏈接](http://msdn.microsoft.com/en-us/library/gg413373.aspx#ExpressionBlend) – theartwebreathe
爲什麼?如果您根據名稱對節點進行不同處理,則應在創建節點時花時間指定Id或其他標識符。 – Rachel