TreeViewカスタマイズされたアイテムを含むwpfがあります。各ノードは、内部にwpfエクスパンダーを備えたwpfボーダーです。エキスパンダーには、ノードの子アイテムなどが含まれます。つまり、すべてTreeViewNodeのアイテムが内部にあります。
TreeViewItem:UI表現:
the outer element: a wpf Border (the node):
/-----------------\
| |
| title(textbox) |
| |
| \/Expander |
| | | |
| | child | |
| | items | |
| ---------- |
| |
\-----------------/
ViewmodelforにTreeViewItemは、さらにObservableCollectionsTreeviewItemがあります。
を使用してアイテムを追加するObservableCollection<Item>.Add(..)と、TreeviewItemビューには新しいアイテムのあるノードが表示されます。これにより、wpfが拡大され、wpfBorder内に新しいアイテムが表示されますExpander。
Itemsを使用して削除するObservableCollectionyItem>.Remove(..)と、TheBorderは再び縮小し、空のエキスパンダーが表示されます。
これが私が守りたい行動です!
問題:私は:に使用しましTextBoxた
DockPanel.Dock = "Top"
Border幅に合わせて。TextBoxこれにより、が新しい境界線の幅に合うように引き伸ばされます。子アイテムを削除すると、境界線が大きくなるため、境界線の幅が狭くなりませんTextBox
。TextBoxしかし、私はを外側の境界から独立させたいと思っています。
子アイテムが追加されたときに使用可能なスペースにサイズ変更するTextBox必要がありますが、子アイテムが削除されたときに境界線が小さいサイズにスナップバックすることに影響を与えないようにする必要がありTextBoxます。幅からレイアウト要素への依存関係はありません。これを達成する方法は?
例:DockPanel.Dock="Left"テキストボックスに使用すると、拡大しません(良くありません)が、要素を削除すると、境界線は以前のサイズ(良くなります)に戻ります。
テキストボックスの幅をwpfの自動UIサイズ設定に関連させないようにするにはどうすればよいですか?ちなみに、コードからtreeviewitemsのサイズを変更したくありません。