DataGridColumns klonen.



  • Hallo,

    Ich habe ein Custom Control, wo ich in einem Popup ein DataGrid mit frei definierbaren Columns hoste. Nun möchte ich, dass unter Umständen nicht ein Popup, sondern auch ein ganzes Window mit noch mehr Funktionalität geöffnet werden kann, wo aber auch ein DataGrid mit denselben Columns drin enthalten sein muss.

    Leider kann ich die Columns nicht im Code-behind elegant Clonen, was zum Problem wird, da:

    Die DataGridColumn mit dem Header "Name" ist bereits in der Spaltenauflistung eines DataGrid vorhanden. DataGrids können Spalten nicht gemeinsam nutzen und dürfen keine doppelten Spalteninstanzen enthalten.

    Ich habe im Netz eine funktionierende Deep-Copy Funktion mittels Reflection gefunden, möchte mich jedoch nicht darauf verlassen.

    Gibt es sonst noch eine Möglichkeit?

    MfG



  • Zeige mal Code. Ich verstehe das Problem nicht ganz.
    Die Spalten zu klonen ist eigentlich kein Problem:

    int cunt = dataGridView1.Columns.Count;
    for (int i = 0; i < cunt; ++i)
    dataGridView2.Columns.Add(dataGridView1.Columns[i].Clone() as DataGridViewColumn);
    

    Das klont die Spalten, nicht aber die Daten. Heißt: Das DGV ist leer.

    Eigentlich müsstest Du doch nur ein zweites DGV in der Detailansicht mit identischen Einstellungen wie das im ersten Fenster erstellen, die gleichen Daten binden und glücklich sein. Der Witz an Databinding ist doch gerade, dass alles automatisch synchron gehalten wird.



  • Ich hätte vielleicht noch sagen sollen: Ich arbeite mit Visual Studio 2012, .NET 4.5 und WPF 😉

    Dort gibt es leider keine Clone-Methode mehr.

    MfG


Log in to reply