TreeView
カスタマイズされたアイテムを含むwpfがあります。各ノードは、内部にwpfエクスパンダーを備えたwpfボーダーです。エキスパンダーには、ノードの子アイテムなどが含まれます。つまり、すべてTreeViewNode
のアイテムが内部にあります。
TreeViewItem
:UI表現:
the outer element: a wpf Border (the node):
/-----------------\
| |
| title(textbox) |
| |
| \/Expander |
| | | |
| | child | |
| | items | |
| ---------- |
| |
\-----------------/
Viewmodel
forにTreeViewItem
は、さらにObservableCollection
sTreeviewItem
があります。
を使用してアイテムを追加する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のサイズを変更したくありません。