Probabilmente, se avete iniziato a sviluppare applicazioni in WPF, avrete notato che qualche controllo che eravate soliti a usare, non c'è più. Tra i più importanti di questi, il MDI Parent, il controllo per ospitare altri form nel form principale (o in un secondario).
Iniziamo con le dichiarazioni.
Dichiarate queste variabili globali
Private WithEvents wnd As Window
Dim grid2 As Grid
Il controllo grid2 serve a evitare bug grafici, poiché qualora ripuliste il Grid1, ne riscontrereste.
Usate questo codice
Private Sub Use_ChildWindow() grid2 = New Grid grid.Children.Add(grid2) 'grid2.Margin = New Thickness(10, 0, 0, 0) wnd = New [Nome Window]() wnd.Show() Dim childContent As Object = wnd.Content wnd.Content = Nothing wnd.Owner = Me grid2.Children.Add(TryCast(childContent, UIElement)) Me.Focus() End Sub
Usate grid2.Margin se volete aggiustare lo spazio che magari non è disposto come volete voi. I parametri messi nel commento sono solo un esempio ovviamente
Ricordate di settare il parametro x:Name alla vostra Grid, altrimenti grid. vi risulterà errore perché non è dichiarato
E infine, wnd_Closing
Private Sub wnd_Closing() Handles wnd.Closing grid.Children.Remove(grid2) End Sub
Questo codice provvederà a pulire la Grid una volta che chiudete il vostro ChildWindow.
Infine ecco cosa dovete fare se la vostra applicazione è multilingua.
Mettete questo codice all'avvio del vostro ChildWindow per ogni controllo multilingua (con i dovuti adattamenti)
[Controllo].Content = FindResource("[Nome parametro]").ToString()
Se non lo fate potreste ottenere dei Warning nell'Output. Ricordate sempre di mettere prima questo
Resources.MergedDictionaries.Add(item As System.Windows.ResourceDictionary) 'Al posto di item ovviamente dovete mettere il vostro parametro. 'Non mi ci soffermo oltre perché altrimenti usciremmo dal contesto 'di questo tutorial
Come vedete non abbiamo importato nessun Riferimento e nessuna Libreria. Consiglio l'utilizzo di questo articolo se volete importare il contenuto di un form più che una finestra intera. Non l'ho testato per quello (ho usato il codice basato sul mio programma). Potrete trovare qualcosa di simile girando su Google ovviamente, ma solo questo tutorial è abbastanza completo da permettervi di non ottenere bug grafici senza molti adattamenti al codice.
Se volete ottenere risultati migliori dovrete usare librerie di controlli simili al ChildWindow, una cosa che io non consiglio poiché sono molto incompatibili.
Aggiungi un commento