Skocz do zawartości
Kyle

[C# WPF XAML] Jak otworzyć stronę z okna?

Rekomendowane odpowiedzi

Witajcie

 

Mam program stronicowy (kolejne karty programu to "Page"). Otwarcie z jednej karty kolejnej jest bezproblemowe ... po prostu w StronaGlowna.xaml.cs wpisujemy:

        private void btnOtworzStrone_Click(object sender, RoutedEventArgs e)
        {
            Strona Strona_Page = new Strona();
            this.NavigationService.Navigate(Strona_Page);
        }

... i otwiera nam się karta "Strona", po wciśnięciu odpowiedniego przycisku.

 

Teraz otwarcie okna ("Window") ze strony, też jest łatwe, proste i przyjemne, po prostu w Strona.xaml.cs wpisujemy:

        private void btnOkiennica_OkiennicaMoja_Click(object sender, RoutedEventArgs e)
        {
            Okiennica okno = new Okiennica();
            okno.Show();
        }

I wyskakuje nam, po wciśnięciu przycisku nasze okienko z zawartością (w tle wyświetla się przez cały czas Strona, z której otwarliśmy okno).

 

Teraz problem polega na tym, jak otworzyć/odświeżyć "Strona" która jest przez cały czas otwarta w tle (lub przejść do innej strony w tym tle) z poziomu naszego małego "Window", które się otworzyło.

 

... mam nadzieję, że nie namieszałem przesadnie ;)

 

Przykład zastosowania praktycznego:

W programie stronicowym, na jednej ze stron jest przycisk "Wyszukaj", po jego naciśnięciu, wyskakuje okienko gdzie wpisujemy nazwę do wyszukania z przyciskiem "Rozpocznij szukanie" ... po wciśnięciu którego, zamyka się to okienko, a pokazuje się strona z wynikami.

Edytowane przez Kyle

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Czy po zakończeniu całej operacji, nie zostanę z zawartością <Page> na poziomie <Window> które wyskoczyło? (a tego bym nie chciał, na końcu ma zostać poziom <Page>)

 

... a może źle się do tego zabieram i nie powinienem robić programu opartego na <Page> ? (w sumie mogę to przerobić na inny typ, bo wiele roboty z tym nie ma).

 

Przyciski nawigacyjne nie są potrzebne (już je ukryłem przez ShowsNavigationUI="False" ), tylko chodziło mi o prostą realizację zmieniającej się zawartości okna głównego programu.

 

Jak Wy realizujecie tego typu programy? Przez <Page>? Czy może jedynie zmieniacie zawartość w MainWindow? ... hmmm ... w sumie, przez

 

this.Content =

 

możnaby ładować nowy zestaw kontrolek do okna. Idę się napić herbatki ... bo ten Page to chyba nie jest optymalne rozwiązanie (?).

Edytowane przez Kyle

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zmien wywolanie okna na:

private void btnOkiennica_OkiennicaMoja_Click(object sender, RoutedEventArgs e)
{
    Okiennica okno = new Okiennica(ref_do_strony_wywolujacej);
    okno.Show();
}

W okiennicy zmien:

class Okiennica{
// ...
Strona strona_wywolujaca;
   Okiennica(strona a){
       //....
       strona_wywolujaca = a;
   }
   // ...
   function zwroc_wynik()
   {
      strona_wywolujaca.twoja_funkcja_do_wyswietlania_strony = twoj_wynik_wyszukiwania;
   }
}

C# znam w malym stopniu, ale poczytaj o referencjach (przezwiskach obiektow). Przesylasz ref (tutaj do strony wywolujacej okno) do wyskakujacego okna (czyli twoja okiennica) i dzieki temu pracujesz na obiekcie, ktory wywolal to okno :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...