Ho il seguente:
A MainWindow;
con Bambini sulla MainGrid nella finestra principale:
- ContentControl, visualizza il contenuto principale del programma e ha una barra delle applicazioni in basso per l'interazione dell'utente
- AddContentControl, deve essere avviato tramite ContentControl, un controllo che consente all'utente di aggiungere contenuto a ContentControl
- TakePictureControl, deve essere avviato da AddContentControl, consente all'utente di scattare una foto tramite webcam
- CropControl, deve essere avviato da TakePictureControl dopo che è stata scattata la foto, perché l'immagine deve essere quadrata
- SettingsControl, deve essere avviato da ContentControl, consente di modificare le impostazioni del programma
Quindi in pratica ho la seguente gerarchia: MainWindow < -MainGrid < -I cinque controlli, solo uno visibile alla volta
Poiché i controlli sono figlio di MainGrid / Window, non posso accedere agli oggetti inizializzati del controllo.
Quello che voglio è il seguente:
- Rimani in una finestra
- accedere a un controllo da un altro controllo
- passare argomenti a un controllo da un altro controllo (ad esempio immagine da TakePhotoControl a CropControl) codice
- facile da comprendere e orientato agli oggetti
Quello che avevo prima era che non incapsulavo i controlli, quindi avevo la logica principale nel MainWindow.xaml.cs e tutti gli elementi dell'interfaccia utente direttamente sulla MainGrid. Positivo era che potevo accedere a tutto ciò che volevo. Negativo è che questo è stato orribile da leggere (e peggiorerà), non comodo da modificare, non orientato agli oggetti e difficilmente riutilizzabile.
Come posso risolvere il mio problema?