我有一個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(..)
刪除Items
,Border
再次收縮並顯示空的擴展器。
這是我想要保持的行爲!
問題:我用於TextBox
:
DockPanel.Dock = "Top"
,以適合Border
寬度。這延伸TextBox
以適應新的邊框寬度。 當我刪除一個子項目時,邊框的寬度將不會減小,因爲TextBox
現在變大了。但我想TextBox
是從外部邊界獨立。
的TextBox
應該調整到可用空間,當子項中添加, 但不應從回彈到一個更小的尺寸影響邊界,當子項是removed.There應該沒有從TextBox
寬度依賴任何佈局元素。 如何做到這一點?
例如:如果我使用DockPanel.Dock="Left"
的文本框, 它不會增長(不好),但在移除元素時的邊界將捕捉回其原來的尺寸(好)。
如何才能使文本框的寬度不是與wpf自動UI大小相關?順便說一下,我不想從代碼中調整treeviewitems的大小。