1

我有一个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 的大小。

4

1 回答 1

0

我在这里找到了一个非常有用的提示:

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

如果将文本框放在画布内,它不会影响外边框宽度!

于 2012-10-22T14:48:59.230 回答