di tehMick è assolutamente corretto: Si dovrebbe creare un contenitore per fare il ridimensionamento piuttosto che la personalizzazione del controllo TextBox in sé. E se funziona per te, GridSplitter
è un'ottima soluzione in-the-box.
Avevo la stessa situazione ma GridSplitter non funzionava, quindi ho creato un controllo "ResizeBorder" che gestiva il trascinamento del mouse sui suoi quattro angoli per ridimensionarlo in due dimensioni, o il centro dei lati per ridimensionarlo in uno. Questo è in realtà un codice molto semplice: basta gestire MouseDown, impostare una variabile locale che fornisce la posizione MouseDown e il lato/angolo trascinato, quindi MouseMove aggiorna la dimensione.
My ResizeBorder era stylable in modo da poter mostrare solo quattro scatole agli angoli e le linee sui lati, o qualcosa di più complesso che potessi immaginare.
Si noti inoltre che se si sta utilizzando una griglia e GridSplitters o un ResizeBorder o qualsiasi altra cosa, si ha la scelta di mettere la funzionalità di ridimensionamento sia intorno al controllo in questo modo:
<my:ResizeBorder ...>
<TextBox ... />
</my:ResizeBorder>
o l'aggiornamento del ControlTemplate per TextBox sé:
<ControlTemplate x:Key="ResizableTextBox" TargetType="{x:Type TextBox}">
<my:ResizeBorder>
...
</my:ResizeBorder>
</ControlTemplate>
...
<TextBox Template="{StaticResource ResizableTextBoxTemplate}" ... />
I vantaggi di questo secondo metodo sono che è possibile utilizzare uno stile o proprietà associata a fare maggio TextBoxes ridimensionabile e che ca n cambia facilmente la ridimensionabilità del TextBox in modo dinamico nel codice.
fonte
2010-05-14 18:25:36
Duplicato: http://stackoverflow.com/questions/771275/resizing-a-control-in-wpf – Heinzi
Questo non dovrebbe essere contrassegnato come duplicato poiché nulla su quel link funziona. –