none
Daten aus Page an das übergeordnete Fenster übergeben RRS feed

  • Frage

  • Guten Abend,

    ist es möglich Daten von einer Page die sich in einem Frame befindet, an das Window zu übergeben in dem sich das Frame befindet?

    Also ich habe ein Fenster (MainWindow.xaml) in dem sich ein Frame (Frame1) befindet. In dem Frame habe ist eine Page (Page1).

    Wie kann ich nun Daten aus Page1 an das MainWindow übergeben?

    Also genauer gesagt ist mein vorhaben folgendes:

    Ich habe in meinem MainWindow ein Menu, ein Frame und eine StatusBar. Jetzt möchte ich bei einem bestimmten Ereignis bzw. auch beim Aufruf einer bestimmten Page, Daten in die StatusBar schreiben und MenuItems aktivieren/deaktivieren.

    Ist das möglich, wenn ja, wie?

    Vielen Dank im vorraus.

    Gruß Markus

    Freitag, 1. Juni 2012 20:04

Antworten

  • Wer OOP noch nicht verinnerlicht hat, für den ist es recht komplex. Wer jedoch bereits in Windows-Anwendung Binding-Objekte intensiv genutzt hat, für den ist es keine große Herausforderung, jedenfalls für den Bereich der Eigenschaftsbindung, was Du für Deine Fragestellung benötigst.
     
    Zu MVVM kannst Du Dir meine Homepage anschauen unter:
     
     
     
    --
    Viele Gruesse
    Peter
    Samstag, 2. Juni 2012 08:46
  • Ich kann Dir leider außer meinem Beitrag nicht mit deutscher Literatur zu MVVM bieten. Es gibt auch nicht so viel dazu zu schreiben, da es praktisch nur ein Anwendungsfall von OOP (objektorientierte Programmierung) ist. Wenn Du mit MVVM Probleme hast, solltest Du dich vorrangig mit OOP beschäftigen.
     
    Die Grundidee von MVVM besteht darin, in der Oberfläche (UI) keinen Hintergrundcode mehr zu schreiben, sondern alle “Verbindungen” der Steuerelemente der Oberfläche mit Daten über Eigenschaften eines “fremden” Objektes (ViewModel) zu organisieren. Dazu ist es lediglich erforderlich, der Oberfläche den Verweis auf dieses “fremde” Objekt (ViewModel) mitzuteilen (am einfachsten über eine statische Ressource) und an den betreffenden Stellen den Eigenschaftsnamen zu binden.
     
    --
    Viele Gruesse
    Peter
    Sonntag, 3. Juni 2012 08:17

Alle Antworten

  • Schau Dir mal das MVVM-Entwurfsmuster an. Damit löst sich Dein Problem leicht lösen.
     
    Die Idee dafür ist, beide Objekte (Page im Frame und MainWindow) nutzen den gleichen ViewModel oder sind über die genutzen ViewModels miteinander verbunden (z.B. über einen gemeinsamen Model). Page im Frame ändert den Wert einer Eigenschaft im ViewModel. Die Änderung des Eigenschaftswertes löst ein NotifyPropertyChanged aus. Wenn MainWindow diese Eigenschaft gebunden hat, wird die Anzeige automatisch aktualisiert.
     
    --
    Viele Gruesse
    Peter
    Samstag, 2. Juni 2012 06:13
  • Vielen Dank für die schnelle Antwort,

    ich werde mir das ganze mal ansehen, wobei ich bisher gehört habe, das es ein recht komplexes Thema ist.

    Gruß Markus

    Samstag, 2. Juni 2012 07:33
  • Wer OOP noch nicht verinnerlicht hat, für den ist es recht komplex. Wer jedoch bereits in Windows-Anwendung Binding-Objekte intensiv genutzt hat, für den ist es keine große Herausforderung, jedenfalls für den Bereich der Eigenschaftsbindung, was Du für Deine Fragestellung benötigst.
     
    Zu MVVM kannst Du Dir meine Homepage anschauen unter:
     
     
     
    --
    Viele Gruesse
    Peter
    Samstag, 2. Juni 2012 08:46
  • Vielen Dank für den Link.

    Gibt es weiterführende Literatur, also ein Buch zum Thema MVVM? nach Möglichkeit in Deutsch.

    Habe nach längerem Suchen bisher nichts gefunden, zumindest nicht in deutscher Sprache.

    Gruß Markus


    • Bearbeitet Numax09 Samstag, 2. Juni 2012 18:40
    Samstag, 2. Juni 2012 18:40
  • Ich kann Dir leider außer meinem Beitrag nicht mit deutscher Literatur zu MVVM bieten. Es gibt auch nicht so viel dazu zu schreiben, da es praktisch nur ein Anwendungsfall von OOP (objektorientierte Programmierung) ist. Wenn Du mit MVVM Probleme hast, solltest Du dich vorrangig mit OOP beschäftigen.
     
    Die Grundidee von MVVM besteht darin, in der Oberfläche (UI) keinen Hintergrundcode mehr zu schreiben, sondern alle “Verbindungen” der Steuerelemente der Oberfläche mit Daten über Eigenschaften eines “fremden” Objektes (ViewModel) zu organisieren. Dazu ist es lediglich erforderlich, der Oberfläche den Verweis auf dieses “fremde” Objekt (ViewModel) mitzuteilen (am einfachsten über eine statische Ressource) und an den betreffenden Stellen den Eigenschaftsnamen zu binden.
     
    --
    Viele Gruesse
    Peter
    Sonntag, 3. Juni 2012 08:17
  • Vielen Dank für den guten Denkanstoß, ich werde mich dann mal mit dem Thema befassen.

    Gruß Markus

    Sonntag, 3. Juni 2012 20:54