Ciao a tutti,
sono un vecchio programmatore C++, ho lasciato per un periodo ed ora riinizio ad affacciarmi al codice con il VISUAL C#.
-------------------------------------------------------------------------------------
Ho ideato una grafica basandomi su codice .xaml ed ho creato quindi la seguente struttura logica per il mio programma:
-MainWindow.xaml
-Page1.xaml
-Page2.xaml
-Page2.xaml
-Page3.xaml
-Page4.xaml
(chiaramente in visual studio ogni elemento avrà il suo .cs)
All'interno della mia MainWindow, ho posizionato una listbox (che resta fissa sulla sinistra) all'interno della quale carico dei nomi di categorie e un frame a far si che ogni volta che si clicchi su una categoria, invece di caricare una nuova window per quella categoria , io possa caricare solo una determinata page all'interno del frame.
Illustro le parti di codice che ho implementato nella MainWindows.xaml.cs:
codice:
using System;
using System.Collections.Generic;
using System.Text;
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.Shapes;
namespace Application
{
public partial class MainWindow : Window
{
Page1 primapagina= new Page1();
Page2 secondapgina= new Page2();
Page3 terzapagina= new Page3();
Page4 quartapagina= new Page4();
public MainWindow()
{
this.InitializeComponent();
}
// carico la primapagina di default all'avvio della window
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//carico la "primapagina" all'interno del frame nella mainwindow
frame1.NavigationService.Navigate(primapagina);
//popolo la listbox con i nome delle pagine
listbox.Items.Add("primapagina");
listbox.Items.Add("secondapagina");
listbox.Items.Add("terzapagina");
listbox.Items.Add("quartapagina");
}
//funzione per il click sul contenuto della listbox
private void category_SelectedIndexChanged(object sender, System.EventArgs e)
{
//acquisisco il testo dell'item che clicco nella listbox (ad esempio "secondapagina")
string item = listbox.SelectedItem.ToString();
//cerco di caricare la pagina (ad esempio appunto "secondapagina")
frame1.NavigationService.Navigate(item);
}
}
Arrivato al punto di dover caricare dinamicamente (a seconda del click nella listbox) una page nel frame, mi accorgo che funziona solo nel caso:
codice:
frame1.NavigationService.Navigate(primapagina);
dove "primapagina" era stato dichiarato:
codice:
Page1 primapagina= new Page1();
e non funziona se:
codice:
//acquisisco il testo dell'item che clicco nella listbox (ad esempio "secondapagina")
string item = listbox.SelectedItem.ToString();
//cerco di caricare la pagina (ad esempio appunto "secondapagina")
frame1.NavigationService.Navigate(item);
Come faccio a fargli prendere quell ITEM come il nome dell'oggetto (primapagina o secondapagina etc...)???
E' come se prendesse item come un nome a caso o una semplice stringa che pesca dalla listbox senza riferirsi al nome della page che ho dichiarato.
Spero di essere stato abbastanza esplicativo!
Vi prego datemi una mano, sto impazzendo per una cosa che secondo me è semplice ma alla quale davvero non riesco a dare una soluzione!
Grazie mille!