2012-10-20 15 views
1

我有一個wpf TreeView與定製項目。 每個節點都是一個帶有wpf擴展器的wpf邊框。擴展器包含節點的子項,依此類推。因此,每個TreeViewNode都有其內容。wpf文本框:默認大小和UI自動化行爲的問題

TreeViewItem:UI表示:

the outer element: a wpf Border (the node): 

/-----------------\ 
|     | 
| title(textbox) | 
|     | 
| \/Expander  | 
| |  |  | 
| | child |  | 
| | items |  | 
| ----------  | 
|     | 
\-----------------/ 

Viewmodel的用於TreeViewItem具有進一步TreeviewItem秒的ObservableCollection

如果我添加使用ObservableCollection<Item>.Add(..)項目, 的TreeviewItem視圖顯示了新項目的節點:它擴大了WPF Border並顯示WPF Expander內的新項目。

如果我使用ObservableCollectionyItem>.Remove(..)刪除ItemsBorder再次收縮並顯示空的擴展器。

這是我想要保持的行爲!

問題:我用於TextBox

DockPanel.Dock = "Top" 

,以適合Border寬度。這延伸TextBox以適應新的邊框寬度。 當我刪除一個子項目時,邊框的寬度將不會減小,因爲TextBox 現在變大了。但我想TextBox是從外部邊界獨立。

TextBox應該調整到可用空間,當子項中添加, 但不應從回彈到一個更小的尺寸影響邊界,當子項是removed.There應該沒有從TextBox寬度依賴任何佈局元素。 如何做到這一點?

例如:如果我使用DockPanel.Dock="Left"的文本框, 它不會增長(好),但在移除元素時的邊界將捕捉回其原來的尺寸()。

如何才能使文本框的寬度不是與wpf自動UI大小相關?順便說一下,我不想從代碼中調整treeviewitems的大小。

回答

0

我發現這裏一個非常有用的提示:

stackoverflow.com/questions/6338315/allow-wpf-grid-cell-content-to-expand-outside-of-the-grid-cell

如果將文本框放在畫布內,它不會影響外邊框寬度!