Laden...

Einfacherer Weg eine Zelle in einem DataGrid zu editieren

Erstellt von Bundy.NET vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.368 Views
B
Bundy.NET Themenstarter:in
76 Beiträge seit 2007
vor 8 Jahren
Einfacherer Weg eine Zelle in einem DataGrid zu editieren

Hi!

Eins vorweg: Habe bis jetzt immer mit WindowsForms gearbeitet, daher bin ich noch sehr unerfahren mit WPF.

Durch Recherche habe ich es jetzt hinbekommen ein DataGrid zellenweise auszulesen und zeilenweise zu befüllen. Jetzt wollte ich schauen wie ich eine Zelle per "CodeBehind" ändern kann. Beim DataGridView bei WindowsForms geht das recht einfach. Hier greife ich wie bei einem Array auf Zeilen, Spalten und Zellen zu. Bei WCF habe ich bis jetzt nur folgende umständliche Methode gefunden. Die funktioniert, aber: Geht das auch einfacher? 😁 🤔

Hier ein Beispiel bei dem der Saldo für einen Kunden aktualisieren wird. Der Einfachheit halber besteht die Tabelle jetzt nur aus 2 Spalten. In Wirklichkeit ist das natürlich vollkommen anders. Soll ja nur ein Beispiel sein. 😁 In der XAML-Datei ist das Bindung auch entsprechend : Binding="{Binding Path=Kunde}" und Binding="{Binding Path=Saldo}"


public void SaldoAnpassen() 
{
   DataGridRow DGR = (DataGridRow)DG.ItemContainerGenerator.ContainerFromIndex(0);
   DataGridCell RowColumn = DG.Columns[0].GetCellContent(DGR).Parent as DataGridCell;
   String Firmenkunde = ((TextBlock)RowColumn.Content).Text;

  var data = new TabellenStruktur { Kunde = Firmenkunde , Saldo = "Mein neuer Saldo" };
            
  MeinDataGrid.Items[0] = data;
}

public class TabellenStruktur
{
     public Kunde {get; set;}
      public Saldo {get; set;}
}

"Fehler sind das Tor zu neuen Entdeckungen"

W
872 Beiträge seit 2005
vor 8 Jahren

Bei WPF solltest Du mit MVVM/DataBinding arbeiten.
Dazu würdest Du das Grid auf eine Observable Collection binden.
Damit Du nicht IProperityNotifyChange auf jedes Property manuell erstellen musst, würde ich mir Fody/PropertyChanged anschauen, um Dir viel getippe zu sparen.

B
Bundy.NET Themenstarter:in
76 Beiträge seit 2007
vor 8 Jahren

Danke weismat!

Mit MVVM habe ich überhaupt noch nicht gearbeitet. Da muss ich mich erstmal einlesen. Auch die Doku zu "Observable Collection" muss ich jetzt mal lesen. 😁
Wenn sich dabei Fragen in Bezug auf mein "Verbesserungsproblem" ergeben, melde ich mich.

Falls aber noch jemand eine weitere Idee oder Vorschlag: Immer her damit. Ist ja immer gut auch mal mehr als einen Weg zu kennen.

"Fehler sind das Tor zu neuen Entdeckungen"

5.299 Beiträge seit 2008
vor 8 Jahren

Ist ja immer gut auch mal mehr als einen Weg zu kennen. Nö, bzw. den einen sollte man auch wirklich kennen, bevor man weiteren Kram ausprobiert.

Und ich kenne keine praktikablen Alternativen zu MVVM.

Der frühe Apfel fängt den Wurm.