Children zweier Canvas-Bereich (WPF) durch DataBinding synchronisieren



  • Hallo,

    ich habe ein Hauptfenster und ein zweites Window, in dem es jeweils ein Canvas-Bereich gibt. Im Haupt-Window werden beim drücken der Maustaste Kreise, Rechtecke und solche Sachen "gemalt" ( --> Child-Elemente des Canvas-Bereiches ). In dem zweiten Window möchte ich auch diese Zeichnungen darstellen.

    Durch DataBinding sollen die Liste mit Child-Elementen ( --> UIElementCollection) der beiden Canvas-Bereiche synchronisiert werden.
    Also wenn im Hauptfenster ein weiter Kreis, Rechteck, etc. hinzukommt, soll er auch im zweiten Fenster erscheinen.

    Leider bin ich mit der WPF und dem DataBinding noch nicht so vertraut. Die von mir angestrebte Lösung:

    public Object Data_Context 
    {
      set { 
            Binding myNewBindDef = new Binding("Children");
            myNewBindDef.Mode = BindingMode.TwoWay;
            myNewBindDef.Source = value;
            canvas1.SetBinding(???, myNewBindDef);
          }
    }
    

    funktioniert leider nicht.
    An die Stelle von ??? bei der SetBinding -Funktion müsste ein DepencyProperty rein. Also sowas wie Panel.UIElementCollectionProperty nur das es das nicht gibt ...

    Wer kann mir helfen die beiden Canvas "kurz zuschließen"?



  • Man kann nur Properties binden, du willst aber komplette Controls klonen. Das geht nicht.
    Du kannst dann nur die selben Controls in beiden Fenstern erstellen.

    Ein Control kann nur _einmal_ angezeigt werden.



  • Danke für die Antwort.
    Dann werde ich wohl beim Start des zweiten Windows eine Instanz des Canvas des Haupt-Fensters übergeben um so auf die Child-Elemente zugreifen zu können.


Log in to reply