Come faccio a fare in modo che un controllo WPF cambi le sue dimensioni in base al contenuto in esso contenuto?Wpf controlla le dimensioni del contenuto?
risposta
Per la maggior parte dei controlli, l'altezza e la larghezza sono impostate su Auto
in XAML e verranno ridimensionate per adattarsi al suo contenuto.
In codice, impostare la larghezza/altezza su double.NaN
. Per i dettagli, vedere FrameworkElement.Width, in particolare la sezione "Note".
Ho avuto un problema di questo tipo in cui avevo specificato la larghezza della mia finestra, ma l'altezza era impostata su Auto
. Il bambino DockPanel
aveva il VerticalAlignment
impostato su Alto e la Finestra aveva il VerticalContentAlignment impostato su Alto, tuttavia la Finestra sarebbe ancora molto più alta del contenuto.
Utilizzando Snoop, ho scoperto che la ContentPresenter
all'interno della finestra (parte della finestra, non è qualcosa che avevo messo lì) ha il VerticalAlignment
insieme a Stretch
e non può essere modificato senza retemplating l'intera finestra!
Dopo un sacco di frustrazione, ho scoperto la proprietà SizeToContent
- è possibile utilizzare questa opzione per specificare se si desidera che la finestra di dimensioni verticalmente, orizzontalmente o entrambi, a seconda delle dimensioni dei contenuti - tutto è dimensionamento bene ora, non riesco a credere che mi ci sia voluto così tanto tempo per trovare quella proprietà!
Vorrei che tutte le Griglie avessero questa proprietà ... – Shimmy
Quando il problema si applica alla finestra di livello superiore Imposta SizeToContent = "WidthAndHeight". Ho perso ore su questo - non è intuitivo! Vedi http://stackoverflow.com/questions/812079/window-heightauto-problem – DeveloperDan
Anche se un 'Window' è un' Control', penso che l'OP si riferisse ad un 'UserControl', che non ha un' SizeToContent 'proprietà. Altrimenti l'OP userebbe il termine "Finestra" nell'oggetto. – ProfK
Se si utilizza la griglia o un componente simile: In XAML, assicurarsi che gli elementi nella griglia abbiano Grid.Row e Grid.Column definiti e assicurarsi che non abbiano margini. Se si è utilizzata la modalità designer o Expression Blend, potrebbe avere assegnato i margini relativi all'intera griglia anziché a particolari celle. Per quanto riguarda il dimensionamento delle cellule, aggiungo una cella in più che riempie il resto dello spazio:
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
ho avuto un controllo utente, che era seduto sulla pagina in un modo forma libera, non vincolata da un altro contenitore, e la i contenuti all'interno del controllo utente non avrebbero dimensioni automatiche, ma si espandono fino alla dimensione totale di ciò che il controllo utente è stato consegnato.
Per ottenere il controllo utente semplicemente formato al suo contenuto, in altezza solo, posi in una griglia con nel braccio impostato automaticamente il formato come questo:
<Grid Margin="0,60,10,200">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<controls1:HelpPanel x:Name="HelpInfoPanel"
Visibility="Visible"
Width="570"
HorizontalAlignment="Right"
ItemsSource="{Binding HelpItems}"
Background="#FF313131" />
</Grid>
- 1. JFrame: dimensioni effettive del contenuto
- 2. Ottenere le dimensioni correnti dei controlli WPF
- 3. UIWebView Inside UIScrollView Dimensioni del contenuto
- 4. WPF - Aggiornamento del contenuto dell'etichetta durante l'elaborazione
- 5. Jekyll: controlla se il contenuto del post è vuoto
- 6. Modifica del contenuto della finestra WPF
- 7. C# Controlla se il file di testo ha un contenuto
- 8. Controlla le righe visibili in un DataGrid WPF
- 9. UITableView dimensioni del contenuto durante l'utilizzo del layout automatico
- 10. JavaMail controlla il contenuto del messaggio gmail IMAP
- 11. Controlla la dimensione del contenuto in una finestra di zenity?
- 12. jQuery: Controlla se il contenuto è contenuto in un iframe
- 13. Dimensioni colonna tabella WPF
- 14. WPF TabControl prendere dimensioni del più grande scheda
- 15. Posizionatore di ornamenti relativo alle dimensioni del genitore in WPF
- 16. Problema relativo alle dimensioni del contenuto per UITableView in UIscrollView
- 17. Redis: Mostra dimensioni/dimensioni del database per le chiavi
- 18. Come rendere UITableView adatto alle dimensioni del contenuto
- 19. Associazione dati WPF Contenuto etichetta
- 20. StringFormat WPF sul contenuto dell'etichetta
- 21. non visualizza il contenuto all'esterno del bordo wpf
- 22. WPF - Hosting del contenuto all'interno di un UserControl
- 23. Come racchiudere le viste del contenuto anziché il background drawable?
- 24. Come ottimizzare le dimensioni del file PDF?
- 25. Come calcolare le dimensioni del file audio?
- 26. Come rappresentare visivamente le dimensioni del file
- 27. Ottenere le dimensioni del monitor in python
- 28. Come vengono scelte le dimensioni del buffer?
- 29. Aumenta corsaTensibilità mantenendo le dimensioni del percorso
- 30. Come ottenere le dimensioni del file dato un percorso?
Inoltre impostato un sacco di controlli il loro Allineamento orizzontale e verticale da allungare che li farà riempire un'area disponibile, quindi sarà probabilmente necessario specificare queste proprietà, ad es. HorizontalAlignment = "Left" VerticalAlignment = "Top". –