Announcement

Collapse
No announcement yet.

Übergabe einer Instanz in ein anderes Fenster

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Übergabe einer Instanz in ein anderes Fenster

    Hallo Leute,

    sollte ich folgendes Szenario vermeiden?

    Ich habe in WPF zwei Windows (MainWindow und SubWindow), spricht irgendwas dagegen, dass ich beim Aufruf aus MainWindow mein SubWindow öffne und meine aktuelle MainWindow Instanz übergebe?


    //Code MainWindow
    Code:
    private void openSubWindow()
    {
        SubWindow sw = new SubWindow(this);
        sw.Show();
    }

    //Code SubWindow
    Code:
    public SubWindow(MainWindow mw)
    {
       this.InitializeComponent();
       instanceMainWindow = mw;
    }
    Danke euch.

  • #2
    Solche Konstrukte wüde ich nicht verwenden. Warum sollte ein Window auf ein anderes Window zugreifen? Wenn dann sollte höchstens das MainWindow das SubWindow instanziieren und diesem irgendwelche Daten übergeben.
    Was möchtest Du denn damit erreichen?

    Comment


    • #3
      Mich würde nur interessieren ob da irgendwas dagegen spricht. Also irgendwelche Problematiken, Risiken, etc...
      Manchmal ist es einfacher die Instanz zu übergeben um irgendwelche Labels , etc anzupassen und zu ändern als wie eher üblich z.B. über Events....

      Comment


      • #4
        Probleme nicht wirklich. Ist halt nur kein besonderer Stil oder sagen wir es mal so nicht mehr 'State-of-the-Art'. Gerade in WPF, aber auch in vielen anderen UI-Systemen, ist es üblich das nicht mehr direkt mit der UI kommuniziert wird(insbesondere nicht die UI Bestandteile untereinander) sondern mit seinem Controler, Presenter, ViewModel oder wie der entsprechende Teil im gerade verwendeten Pattern auch immer heißen mag.

        Üblicherweise sollten sich die UI Elemente nur kennen um die korrekte Z-Order auszuhandeln(davon bekommt man aber als Programmierer nicht mehr unbedingt was mit) und nicht um miteinander zu kommunizieren.

        Comment


        • #5
          Natürlich darfst Du eigentlich immer alles machen. Es kommt ja auch auf den Kontext an. Wenn das ein schnelles kleines Tool sein soll und das der einfachste Weg ist, dann kann man natürlich auch mal so etwas machen.
          Meine Erfahrung zeigt mir nur immer wieder, dass so schnelle kleine Tool mit der Zeit meist doch anwachsen. Wird eine Applikation größer so sollte man unbedingt auf eine saubere Entwicklung setzen.
          Rein aus der Sicht der Business Logik wirst Du NIE eine TextBox einer View aus einer anderen View befüllen. Eine View ist immer nur eine Sichtweise auf Daten Deiner Business Logik. Veränderst Du nun die Daten in der Logik sollten diese eigentlich der View sagen dass sie sich verändert haben und der Controller oder das ViewModel die entsprechenden Maßnahmen treffen damit die UI entsprechend geupdatet wird.
          Natürlich bedeutet das mehr Aufwand und es ist natürlich auch immer abzuwägen ob sich dieser Aufwand lohnt. Allerdings würde ich sagen dass alles was nicht ein Prototyp ist so programmiert werden sollte. Später ärgert man sich nur drüber dass man anfangs so schludrig war. Zumal sich so etwas sehr sehr schwer refactoren lässt.

          Comment

          Working...
          X