Qualcuno sa come posso posizionare un controllo popup nel centro dello schermo?C#/WPF: posiziona il controllo popup nel centro dello schermo?
Grazie!
Qualcuno sa come posso posizionare un controllo popup nel centro dello schermo?C#/WPF: posiziona il controllo popup nel centro dello schermo?
Grazie!
Utilizzare le proprietà Placement e PlacementTarget per posizionarlo rispetto a qualsiasi pannello si trovi nella radice della finestra. Quindi, se ho un Grid
, StackPanel
, ecc, che contiene tutte le altre "cose" nella finestra chiamata MainPanel
, mi fare qualcosa di simile:
<Popup
PlacementTarget="{Binding ElementName=MainPanel}"
Placement="Center"
>
Innanzitutto, è possibile utilizzare le proprietà statiche FullPrimaryScreenHeight
, FullPrimaryScreenWidth
della classe System.Windows.SystemParameters
per ottenere l'altezza e la larghezza dello schermo. Quindi, puoi impostare le proprietà Top
e Left
del controllo popup usando la larghezza e l'altezza prima di mostrarle.
Qualcosa come.
double primScreenHeight = System.Windows.SystemParameters.FullPrimaryScreenHeight;
double primScreenWidth = System.Windows.SystemParameters.FullPrimaryScreenWidth;
_yourControl.Top = (primScreenHeight - _yourControl.Height)/2;
_yourControl.Left = (primScreenWidth - _yourControl.Width)/2;
Usa griglia come contenitore e di allineamento funziona bene per voi:
<Popup IsOpen="True">
<Grid Name="canvasMain">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
...
</StackPanel>
</Grid>
</Popup>
così semplice ma funziona perfettamente – BastanteCaro
Ho provato questo e non funziona. Questo sembra centrare il contenuto del popup, non il popup stesso. –
Nessuna di queste risposte ha funzionato per me in parte perché non ho la dimensione del Popup. Ho finito per fare questo nel codice dietro come segue:
var popup = new Popup
{
Child = new YourUIControlHere(),
Placement = PlacementMode.Center,
PlacementRectangle = new Rect(new Size(
SystemParameters.FullPrimaryScreenWidth,
SystemParameters.FullPrimaryScreenHeight))
};
Questo potrebbe essere facilmente esteso a XAML aggiungendo un'associazione per le dimensioni dello schermo.
Un miglioramento evidente consiste nell'utilizzare la schermata corrente per il supporto multi-monitor. Ottenere le dimensioni della finestra corrente è comunque molto più utile.
Questa era la soluzione giusta per me! –
E se si utilizza una serie di controlli utente nidificati ???? La domanda – landoncz
riguardava il centro dello schermo, non il centro del pannello o della finestra. –
Questo non risponde alla domanda. Questo posizionerà l'angolo in alto a sinistra del popup in mezzo allo schermo, non centrerà il popup – Brandon