2012-03-23 19 views
6

Po kliknięciu przycisku na pasku nawigacji otworzy się nowe okno. Na przykład:Zmiana zawartości okna WPF

private void btFinanzen_Click(object sender, RoutedEventArgs e) 
    { 
     Finanz mw = new Finanz(login); 
     mw.Show(); 

    } 

Nie chcę tego pokazywać w nowym oknie. Zamiast tego chcę, aby był pokazywany w tym samym oknie. Próbowałem z następujących:

private void btFinanzen_Click(object sender, RoutedEventArgs e) 
    { 
     Finanz mw = new Finanz(login); 
     //mw.Show(); 
     this.Content = Finanz f; 

    } 

, ale nie powiodło się. Muszę powiedzieć, że mam teraz wiele różnych okien i chcę, aby wszystkie były wyświetlane w jednym oknie - po kliknięciu innego przycisku. Jak mogę to zarządzać?

Odpowiedz

6

Należy użyć kontrolki UserControl zamiast okna do wymienianej zawartości. Dodaj nową Kontrolę użytkownika dla każdej możliwej zawartości, którą chcesz pokazać w tym formularzu do swojego projektu. Dodaj zawartość, która była wcześniej w drugim oknie, do odpowiedniego UserControl. Następnie można po prostu utworzyć nową kontrolę w kodzie i przydzielić ją do obszaru zawartości głównego okna.

Na przykład utworzysz UserControl ctlFinanz z zawartością poprzedniego okna Finanz. Teraz po prostu napisać:

this.Content = new ctlFinanz(login); 

to wszystko :-)

1

Miałem ten sam problem i postanowiłem utworzyć oddzielne sterowanie użytkownika dla każdego okna, umieścić je w moim wpf i ustawić widoczność wszystkich okien z wyjątkiem aktywnego do zwiniętego.

0

Dla mnie brzmi to jak miejsce do wykorzystania ramkę z stron. Zamiast tworzyć wiele okien, zrób jedno okno z ramką, a następnie umieść zawartość na stronach. Następnie wystarczy zmienić zawartość ramki .Content na inną stronę za każdym razem, gdy naciśniesz przycisk nawigacyjny.