WPF DataGrid VB.NET

  • WPF

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    WPF DataGrid VB.NET

    Hallo zusammen,

    ich habe mal eine frage bzgl. WPF und DataGrid. Ich habe per XAML folgendes DataGrid erstellt:


    XML-Quellcode

    1. <DataGrid x:Name="DataGridTest" Margin="10,10,10,123" CanUserAddRows="False" CanUserResizeRows="False" AutoGenerateColumns="False" IsReadOnly="True" >
    2. <DataGrid.Columns>
    3. <DataGridTextColumn Width="*" Header="Test1" Binding="{Binding Test1}" />
    4. <DataGridTextColumn Width="*" Header="Test2" Binding="{Binding Test2}" />
    5. <DataGridTextColumn Width="*" Header="Test3" Binding="{Binding Test3}" />
    6. </DataGrid.Columns>
    7. </DataGrid>


    Dieses DataGrid fülle ich über DataTable Beispiel:


    VB.NET-Quellcode

    1. Dim dt = New DataTable()
    2. Dim Felder() as String
    3. dt.Columns.Add("Test1")
    4. dt.Columns.Add("Test2")
    5. dt.Columns.Add("Test3")
    6. Dim dr As DataRow = dt.NewRow
    7. dr.ItemArray = Felder
    8. dt.Rows.Add(dr)
    9. DataGridTest.ItemSource = dt.DefaultView




    Nachdem ich das DataGrid gefüllt habe möchte einen Wert in einer Zelle ändern.
    z.B. Spalte Test2 Zeile 4
    Kann mir jemand sagen wie ich das mit vb.net machen kann?
    Wie ich eine bestimmte Zelle lesen kann habe ich herausgefunden

    VB.NET-Quellcode

    1. MyValue = CType(MyDataGrid.Items(4), DataRowView).Row.ItemArray(1)


    Wie schon gesagt, ich bekomme es nicht hin einen Wert in einer bestimmten Zelle zu ändern. Wäre super wenn jemand eine Idee hat.
    Vielen Dank im Voraus...

    PS: Ich bin Anfänger :/

    Gruß Jens
    Hallo VB1963,

    danke für den Artikel. Leider konnte ich aus diesem Artikel noch nicht so ganz die Lösung für meine Frage herausziehen.
    In meinen vorherigen Programmen habe ich immer mit dem DataGridView gearbeitet. Hier konnte man mit folgendem Befehl eine Zelle bearbeiten:

    VB.NET-Quellcode

    1. DataGridView.Item(Test1, 0).Value = "MyValue"


    Gibt es bei WPF mit DataGrid auch so einen Einzeiler?
    Man bindet ein Datagrid an die Daten (gerade in WPF) und man wurstelt nicht im Control herum, um per Code die Daten darin einzutragen...
    D.h. man trennt die Daten von der GUI...
    Ich kann dir zur Hilfe diesen Link nur empfehlen, wenn du weiterkommen möchtest.
    Hallo VB1963,

    vielen Dank für deinen Hinweis. Ich habe es jetzt so gemacht wie du gesagt hast und es funktioniert. Jetzt hätte ich doch noch eine kleine Frage an Dich. Ich würde gerne nachträglich (also wirklich nachträglich) gerne eine bestimmte Zelle einfärben. Dazu habe ich folgenden Code gefunden

    C#-Quellcode

    1. //Koordinaten der Zelle
    2. int x = 1;
    3. int y = 2;
    4. DataGridRow row = dg.ItemContainerGenerator.ContainerFromItem(dg.Items[y]) as DataGridRow;
    5. DataGridCell cell = dg.Columns[x].GetCellContent(row).Parent as DataGridCell;
    6. cell.Background = Brushes.Red;//Hintergrund zuweisen



    Leider kenne ich mich mit C# nicht gut aus. Hast du eine Idee wie ich das in VB.NET umschreiben kann. Ich habe es versucht aber leider immer einen Fehler "Objekt darf nicht NULL sein" (oder so ähnlich) erhalten.