tratto allineamento WPF
-
11-09-2019 - |
Domanda
Qualcuno può aiutarmi a capire l'allineamento tratto WPF. Mi capita spesso di incorrere in problemi dove voglio un controllo per riempire uno spazio, ma non ho mai capito a quale livello dovrei mettere il VerticalAlignment = "Stretch". Specialmente quando UserControls sono coinvolti.
Ho sempre risolvere il problema cercando cose diverse o mettere tratto su tutti i livelli, ma vorrei capire come farlo correttamente.
Consente di prendere l'esempio che ho avuto oggi:
- Ho una griglia con una cella dimensione fissa (che può essere ridimensionato con un GridSplitter)
- In questa cella ho un UserControl contenente uno StackPanel con un TabControl
- Nella TabControl ho TabItems contenenti un altro UserControl con un controllo ListView
O in una sorta di pseudo XAML
<ns:MyUserControl1 Grid.Row="0" Grid.Column="0">
<!-- this is in MyUserControl1 -->
<StackPanel>
<TabControl>
<TabItem>
<ns:MyUserControl2>
<!-- This is in MyUserControl2 -->
<ListView/>
</ns:MyUserControl2>
</TabItem>
</TabControl>
</StackPanel>
</ns:MyUserControl>
Ora voglio il ListView per riempire l'intera cella della griglia (escluso il TabControl e margini, naturalmente).
Soluzione
Il tuo ListView riempirà la vostra MyUserControl2 - se si desidera che questo per adattarsi all'interno di tutta la scheda, è necessario assicurarsi di rimuovere altezza e larghezza dei vincoli all'interno del file XAML del UserControl (questi saranno default a 300 ciascuno)
EDIT: Apologies - Ho saltato la parte importante della vostra XAML ... Il contenitore MyUserControl1 è uno StackPanel ... questo sarà impilare controlli figlio e ridimensionare per adattarsi loro; Se si sostituisce con un DockPanel (o una griglia), i controlli figlio riempiranno lo spazio disponibile e vi darà il risultato che siete dopo ...
Dai un'occhiata alla questo articolo di MSDN ... Speranza questo aiuta:)