wpf textbox:默认大小调整和UI自动化行为的问题

时间:2012-10-20 14:03:27

标签: wpf textbox treeview ui-automation

我有自定义项目的wpf TreeView。 每个节点都是一个wpf边框,里面有一个wpf扩展器。扩展器包含节点的子项,依此类推。所以每个TreeViewNode都有自己的项目。

TreeViewItem:用户界面代表:

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

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

Viewmodel的{​​{1}} TreeViewItem还有ObservableCollection个。{/ p>

如果我使用TreeviewItem添加项目, ObservableCollection<Item>.Add(..)视图显示包含新项目的节点:它会放大wpf TreeviewItem并在wpf Border中显示新项目。

如果我使用Expander删除Items,则ObservableCollectionyItem>.Remove(..)会再次收缩并显示空的扩展程序。

这是我想保留的行为!

问题:我用于Border

TextBox

以适合DockPanel.Dock = "Top" 宽度。这会拉伸Border以适应新的边框宽度。 当我删除子项时,边框的宽度不会减小,因为TextBox 现在更大了。但我希望TextBox与外边界无关。

当添加子项时,TextBox应调整到可用空间, 但是当移除子项时,不应该影响边界从捕捉到较小的大小。从TextBox宽度到任何布局元素都不应该有依赖关系。 怎么做到这一点?

示例:如果我使用TextBox作为文本框, 它不会增长(好),但在删除元素时,边框会快速恢复到以前的大小( good )。

如何使文本框的宽度与wpf自动UI大小相关?顺便说一句,我不想​​从代码中调整treeviewitems的大小。

1 个答案:

答案 0 :(得分:0)

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

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

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