none
WPF - Datagrid - Zeile einfügen RRS feed

  • Frage

  • Hallo zusammen,

    gibt es eine Möglichkeit, eine Zeile in ein Datagrid einzufügen, die eine andere Datenstruktur hat?

    Danke

    Dirk

    Montag, 16. März 2015 16:29

Antworten

Alle Antworten

  • Hallo,
    eigentlich ist das DataGrid dafür ausgelegt Daten anzuzeigen, deren Eigenschaften immer die gleichen sind. Also Beispielsweise ID, Name und Alter. Wenn nun eine anderer Typ keine Name-Eigenschaft hat, so würde diese Spalte leer bleiben.
    So gesehen ist das DataGrid also nicht für verschiedene Datensätze vorgesehen. Modifizieren kann man in WPF natürlich alles, sodass man dein Vorhaben vielleicht auch irgendwie realisieren könnte. Die Frage ist nur, wie du dir dann die Anzeige vorstellst.

    Wenn es rein um da Binding geht, so kannst du im einfachsten Fall einfach eine ObservableCollection<Object> binden. Besser wäre natürlich das auf eine gemeinsame Basisklasse oder Schnittstelle der Datensätze einzuschränken.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Montag, 16. März 2015 17:11
    Moderator
  • Hi Dirk,
    wenn Du die darzustellende Information in einerText-Eigenschaft bereitstellst, deren Inhalt Du selbst "zusammenbastelst", dann kannst Du über diesen Trick eine scheinbar unterschiedliche Datenstruktur darstellen. Damit unterschiedliche Inhalte zusammenpassen, muss ggf. eine Schrift mit fester Bereite für die Spalte genutzt werden. Es bleibt dann noch die Überschrift einer solchen Spalte.

    Bitte schreib Du mal, wozu Du das benötigst. Vielleicht gibt es eine alternative Idee dafür, z.B. in WPF.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks

    Dienstag, 17. März 2015 03:21
  • Erstmal Danke...

    Ist eigentlich nicht so schlimm....

    In Abhängigkeit von Feldwerten, eine DatagridRow anpassen/verändern (Hintergrundfarben usw.).

    Und wenn möglich auch Feldinhalte anpassen/verändern.

    Habe natürlich auch im Internet recherchiert - Folgendes Beispiel:

    <DataGrid.RowStyle>
       <Style TargetType="{x:Type DataGridRow}">
          <Style.Triggers>
            <DataTrigger Binding="{Binding Status}" Value="X">
                <Setter Property="Background" Value="Red">
                </Setter>
           </DataTrigger>
           <DataTrigger Binding="{Binding Status}" Value="O">
                <Setter Property="Background" Value="Orange"> 
               </Setter>
        </DataTrigger>
        <DataTrigger Binding="{Binding Status}" Value="Y">
               <Setter Property="Background" Value="#639c18">
               </Setter>
        </DataTrigger>
       </Style.Triggers>
      </Style>
     </DataGrid.RowStyle>

    Es bezieht sich alles nur auf das Feld -Status- .

    Kann ich keine Abhängigkeit zu einem anderen Datenfeld herstellen?

    Wenn sich das Feld Status ändert, verändert sich bei Feld A der Inhalt?

    Danke

    Dirk


    Dienstag, 17. März 2015 11:04
  • Hallo Dirk,
    ohne einem konkreten Beispiel würde ich hier wohl auf einen Konverter setzen. Diesen kannst du zwischen die Eigenschaft und das gebundene Objekt schalten. Dadurch kannst du im Codebehind nach belieben aus einem Wert einen anderen machen. Solange das auch Rückwärts Funktion wäre auch ein Bearbeiten innerhalb des DGs noch problemlos möglich.

    Ebenfalls kannst du in einem Konverter auch Brushes o.ä. zurück geben um so verschiedene Farben in jedem Datensatz zu erreichen.

    Ein Beispiel wie man einen solchen Konverter erstellen und verwenden kann findest du folgendem MSDN-Blogbeitrag: IValueConverter in WPF data binding


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Dirk2006 Mittwoch, 18. März 2015 11:57
    Dienstag, 17. März 2015 18:01
    Moderator
  • Danke....
    Mittwoch, 18. März 2015 11:57