WPF aplikacja, problem z przekierowaniem strony

0

Witam
Tworzę projekt na zaliczenie i mam problem z jedną rzeczą
Chciałabym się dowiedzieć w jaki sposób mogę zrobić przekierowanie z jednej strony na drugą po kliknięciu na okienko w formularzu i przycisk Przejdź
Póki co przekierowuje mnie cały czas do strony z Książkami jak na zdjęciachj. A chciałabym żeby po wybraniu np Rezerwacji przekierowało na stronę z rezerwacjami a nie książkami

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace BibliotekaProjekt
{
    /// <summary>
    /// Logika interakcji dla klasy BibliotekaStronaGłówna.xaml
    /// </summary>
    public partial class BibliotekaStronaGłówna : Page
    {
        public BibliotekaStronaGłówna()
        {
            InitializeComponent();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            
             BibliotekaKsiążki książka = new BibliotekaKsiążki();
            this.NavigationService.Navigate(książka); 

            /* BibliotekaRezerwacje rezerwacje = new BibliotekaRezerwacje();
            this.NavigationService.Navigate(rezerwacje);

            BibliotekaUżytkownicy użytkownicy = new BibliotekaUżytkownicy();
            this.NavigationService.Navigate(użytkownicy);

            BibliotekaPracownicy pracownicy = new BibliotekaPracownicy();
            this.NavigationService.Navigate(pracownicy); */
        }

      

    }

}

Próbowałam z wpisaniem wszystkiego po kolei ale wtedy przekierowuje mnie na pustą stronę

screenshot-20220715141038.png
screenshot-20220715141130.png

0

Czemu masz to zakomentowane?

        /* BibliotekaRezerwacje rezerwacje = new BibliotekaRezerwacje();
        this.NavigationService.Navigate(rezerwacje);

        BibliotekaUżytkownicy użytkownicy = new BibliotekaUżytkownicy();
        this.NavigationService.Navigate(użytkownicy);

        BibliotekaPracownicy pracownicy = new BibliotekaPracownicy();
        this.NavigationService.Navigate(pracownicy); */

Musisz zrobić osobny event do przekierowania na rezerwacje. Jeśli pod guzikiem do książek masz najpierw przekierowanie do książek, to kolejne linijki ci się nie wywołają i nie przejdzie magicznie do rezerwacji, bo skąd ma program wiedzieć, że teraz chcesz rezerwację, a nie książki?

To co masz zaznaczone na liście musisz "przekazać" do guzika i wtedy wywołać odpowiednie przejście.

string selectedType = "Książki";

switch(selectedType)
{
  case "Książki":
     BibliotekaKsiążki książka = new BibliotekaKsiążki();
     this.NavigationService.Navigate(książka); 
     break;
   case "Rezerwacje":
     BibliotekaRezerwacje rezerwacje = new BibliotekaRezerwacje();
     this.NavigationService.Navigate(rezerwacje);
     break;
   default:
     break;
}
0
AdamWox napisał(a):

Czemu masz to zakomentowane?

        /* BibliotekaRezerwacje rezerwacje = new BibliotekaRezerwacje();
        this.NavigationService.Navigate(rezerwacje);

        BibliotekaUżytkownicy użytkownicy = new BibliotekaUżytkownicy();
        this.NavigationService.Navigate(użytkownicy);

        BibliotekaPracownicy pracownicy = new BibliotekaPracownicy();
        this.NavigationService.Navigate(pracownicy); */

Musisz zrobić osobny event do przekierowania na rezerwacje. Jeśli pod guzikiem do książek masz najpierw przekierowanie do książek, to kolejne linijki ci się nie wywołają i nie przejdzie magicznie do rezerwacji, bo skąd ma program wiedzieć, że teraz chcesz rezerwację, a nie książki?

To co masz zaznaczone na liście musisz "przekazać" do guzika i wtedy wywołać odpowiednie przejście.

string selectedType = "Książki";

switch(selectedType)
{
  case "Książki":
     BibliotekaKsiążki książka = new BibliotekaKsiążki();
     this.NavigationService.Navigate(książka); 
     break;
   case "Rezerwacje":
     BibliotekaRezerwacje rezerwacje = new BibliotekaRezerwacje();
     this.NavigationService.Navigate(rezerwacje);
     break;
   default:
     break;
}

Mam zakomentowane bo testowałam wcześniej i nie chciałam usuwać

I wkleiłam kodzik z tym switchem ale nadal przekierowuje tylko na książki

0

A selectedType przyjmuje wartość wybranego elementu z Menu?

0
AdamWox napisał(a):

A selectedType przyjmuje wartość wybranego elementu z Menu?
No przyjmuje wartość ,,Książki'''
screenshot-20220715161906.png

0

Powinno przyjmować wartość tego co jest wybrane w twoim menu...

0
AdamWox napisał(a):

Powinno przyjmować wartość tego co jest wybrane w twoim menu...

A jak to zrobić? Bo ja trochę zielona w tym jestem

0

Czym jest kontrolka, w której masz Książki, Rezerwację, Użytkownicy, Pracownicy? Pokaż kod tego elementu z pliku XAML.

0
AdamWox napisał(a):

Czym jest kontrolka, w której masz Książki, Rezerwację, Użytkownicy, Pracownicy? Pokaż kod tego elementu z pliku XAML.

<Page x:Class="BibliotekaProjekt.BibliotekaStronaGłówna"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="350" d:DesignWidth="500"
Title="Biblioteka - Strona Główna">

<Grid Margin="10,0,10,10">

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="230" />
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition Height="Auto"/>
        <RowDefinition />
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <!-- Biblioteka Menu -->

    <Label Grid.Column="0" Style="{StaticResource headerTextStyle}">
        Strona główna
    </Label>

    <Border Grid.Column="0" Grid.Row="1" Style="{StaticResource listHeaderStyle}">
        <Label Style="{StaticResource listHeaderTextStyle}">Menu</Label>
    </Border>
    
 <ListBox Name="menuListBox" Grid.Column="0" Grid.Row="2">
        <ListBoxItem>Książki</ListBoxItem>
        <ListBoxItem>Rezerwacje</ListBoxItem>
        <ListBoxItem>Użytkownicy</ListBoxItem>
        <ListBoxItem>Pracownicy</ListBoxItem>
        </ListBox>

        <!-- Przycisk -->
    <Button Grid.Column="0" Grid.Row="3" Style="{StaticResource buttonStyle}" Click="Button_Click">Przejdź</Button>

    <Grid.Background>
        <ImageBrush ImageSource="picture.jpg"/>
    </Grid.Background>

</Grid>
</page>
0

Spróbuj zrobić w ten sposób.

ListBoxItem item = (ListBoxItem)menuListBox.ItemContainerGenerator.ContainerFromIndex(menuListBox.SelectedIndex);
string selectedType = item.Content;

switch(selectedType)
{
  case "Książki":
     BibliotekaKsiążki książka = new BibliotekaKsiążki();
     this.NavigationService.Navigate(książka); 
     break;
   case "Rezerwacje":
     BibliotekaRezerwacje rezerwacje = new BibliotekaRezerwacje();
     this.NavigationService.Navigate(rezerwacje);
     break;
   case "Użytkownicy":
     BibliotekaUżytkownicy użytkownicy = new BibliotekaUżytkownicy();
     this.NavigationService.Navigate(użytkownicy);
     break;
   case "Pracownicy":
     BibliotekaPracownicy pracownicy = new BibliotekaPracownicy();
     this.NavigationService.Navigate(pracownicy);
     break;
   default:
     break;
}
0

Podkreśla item.Content
I wyskakuje taki błąd
screenshot-20220715205805.png

1

Zrób

string selectedType = item.Content.ToString();
0

Teraz działa
Dziękuję bardzo za pomoc

AdamWox napisał(a):

Zrób

string selectedType = item.Content.ToString();

1 użytkowników online, w tym zalogowanych: 0, gości: 1