[WPF C#] Przełączanie Page z Frame

0

Witam,

sprawa wygląda następująco:

projekt posiada następujące pliki:

Window1
Page1
Page2

W oknie Window1 jest Frame w którym mają się wyświetlać poszczególne Page.

Teraz tak jak ładuję w sekcji:

public Window1()
        {
            InitializeComponent();
            Page1 p1 = new Page1();
            frame1.Content = p1;
        }

i działa ładnie, wyświetla się strona logowania, ale gdy we Frame świeci się już Page1 i naciskam na button zaloguj:

 public void button1_Click(object sender, RoutedEventArgs e)
        {
            Window1 w1 = new Window1();
            Page2 p2 = new Page2();
            w1.frame1.Content = p2;

            
        }

nic się nie dzieje. Generalnie wyświetlaniem Page w Frame można się zajmować poprzez buttony które są umieszczone w Window1, w innym przypadku nic się nie dzieje. Czy wie ktoś może jak to obejść ?

0
 public void button1_Click(object sender, RoutedEventArgs e)
        {
            Window1 w1 = new Window1();
            Page2 p2 = new Page2();
            w1.frame1.Content = p2;

            
        }

tu robisz nowe okno w1 - mimo ze to ta sama klasa to jednak obiekt juz inny i zmieniasz tam frame1 wiec nie widac efektu.

0

To jak się donieść do Frame1 w oknie Window1, z Page1 ? :)

Ale z drugiej strony page tez tworze chociaz juz istnieje, a sie ładuje do frame.

0
kjubersson napisał(a)

To jak się donieść do Frame1 w oknie Window1, z Page1 ?

Na przykład przekazując do Page1 w konstruktorze referencję Window:

// w klasie Window1

        public Window1()
        {
            InitializeComponent();
            Page1 p1 = new Page1(this);
            SetActivePage(p2);
        }

        public void SetActivePage(Page page)
        {
            frame1.Content = page;
        }

// w klasie Page1

        public Page1(Window1 parent)
        {
            InitializeComponent();
            Parent = parent;
        }
        private Window1 Parent { get; set; }

        public void button1_Click(object sender, RoutedEventArgs e)
        {
            Page2 p2 = new Page2();
            Parent.SetActivePage(p2);
        }

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