Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Einfacherer Weg eine Zelle in einem DataGrid zu editieren
Bundy.NET
myCSharp.de - Member



Dabei seit:
Beiträge: 76
Herkunft: Elbental

Themenstarter:

Einfacherer Weg eine Zelle in einem DataGrid zu editieren

beantworten | zitieren | melden

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;}
}
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Bundy.NET am .
"Fehler sind das Tor zu neuen Entdeckungen"
private Nachricht | Beiträge des Benutzers
weismat
myCSharp.de - Member



Dabei seit:
Beiträge: 872
Herkunft: Frankfurt am Main

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von weismat am .
private Nachricht | Beiträge des Benutzers
Bundy.NET
myCSharp.de - Member



Dabei seit:
Beiträge: 76
Herkunft: Elbental

Themenstarter:

beantworten | zitieren | melden

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"
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

Zitat
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.
private Nachricht | Beiträge des Benutzers