我有一个TreeView带有自定义项目的 wpf。每个节点都是一个 wpf 边框,里面有一个 wpf 扩展器。扩展器包含节点的子项,依此类推。所以每个TreeViewNode里面都有它的物品。
TreeViewItem:用户界面表示:
the outer element: a wpf Border (the node):
/-----------------\
| |
| title(textbox) |
| |
| \/Expander |
| | | |
| | child | |
| | items | |
| ---------- |
| |
\-----------------/
的ViewmodelforTreeViewItem有一个ObservableCollection进一步TreeviewItem的 s。
如果我使用 添加项目ObservableCollection<Item>.Add(..),TreeviewItem视图会显示带有新项目的节点:它会放大 wpfBorder并在 wpf 中显示新项目Expander。
如果我删除Itemsusing ObservableCollectionyItem>.Remove(..),Border则再次缩小并显示一个空扩展器。
这是我要保持的行为!
问题:我用于TextBox:
DockPanel.Dock = "Top"
以适应Border宽度。这会拉伸TextBox以适应新的边框宽度。当我删除一个子项时,边框的宽度不会减小,因为TextBox
现在更大了。但我希望TextBox独立于外部边界。
应该在TextBox添加子项时调整到可用空间,但在删除子项时不应影响边框恢复到较小的大小。TextBox宽度不应依赖于任何布局元素。如何做到这一点?
示例:如果我DockPanel.Dock="Left"用于文本框,它不会增长(不好),但在删除元素时边框会恢复到原来的大小(好)。
如何使文本框的宽度与 wpf 自动 UI 大小无关?顺便说一句,我不想从代码中调整 treeviewitems 的大小。