Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

WPF: SelectedItem aus DataGrid auslesen

 

 

Wie wertet man eine Spalte in einem WPF DataGrid.SelectedItem aus?

 

Aufgabe:

Ich möchte den wert einer Spalte auslesen aus einem Datengrid in WPF. Leider ergibt die Auswertung von DataGrid.SelectedItem eine Zeile vom Type <Anonymous Type> und wenn man die Row umwandelt in von DataGrid.SelectedItem in DataRowView  dann wird als Ergebnis immer null zurückgegeben oder die Convertierung von Anonymus Type in DataRowView ist nicht möglich

 

Problem Umwandlung SelectedItem

DataRowView row = ctlDataGrid.SelectedItem as DataRowView;

->returns null

 

Lösung:

Super Lösung mit C# dynamic.

Man kann den Laufzeit Datentyp dynamic verwenden. Dieser Datentyp dynamic kann zur Laufzeit frei verwendet werden wie var variant und man kann einfach die Spalten oder Felder wie eine Eigenschaft abfragen.

Also einfach Umwandlung von SelectedItem in dynamic und dann die Spalte als dynamic.Spalte auswerten. Das ist einfacher als ein Array oder List vom Type String zu bilden.

dynamic row = ctlDataGrid.SelectedItem;

sName = row.Nachname;

 

 

 

 

Auszug : Debug

Der Debug Auszug ergibt, dass sich in der DataGrid SelectedItem ein Array aus Strings zur Laufzeit ergibt.

Die SelectedItem ist von Type <Anonymous Type>

Name

 

Value

Type

ctlDataGrid.SelectedItem

 

{ Nachname = "Butzer", Maschine = "Drehbank 1", Schichtgruppe = "Schicht 2" }

<Anonymous Type>

 

 

Code-Beispiel zu Auswerten des ausgewählten Elements in einem WPF DataGrid Selected Item

Private void CtlDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)

        {

            //----------< CtlDataGrid_SelectionChanged() >----------

            string sName = "";

            //--< get_DataGrid_SelectedItem >--

            //* get DataGrid.SelectedItem as <Anonymus Type > into c#.dynamic

            //* get Value of dynamic variable simply bei get as named property  like dynamic_value.Field

            if (ctlDataGrid.SelectedItem != null)

            {

                dynamic row = ctlDataGrid.SelectedItem;

                sName = row.Nachname;

            }

            //--</ get_DataGrid_SelectedItem >--

 

            //< insert button >

            Button btn = new Button();

            btn.Background = new SolidColorBrush(Colors.Red);

            btn.Content = sName;

            //#todo: Event drag drop einfügen

 

            _srcPanel.Child = btn;

            //</ insert button >

 

            this.Close();

            //----------</ CtlDataGrid_SelectionChanged() >----------

        }

 

 

Mobile
»
WPF: SelectedItem aus DataGrid auslesen mit Anonyous Type auf Dyamic Type
»
WPF: Elemente zu breit, rand abgeschnitten
»
Gelöst: System.InvalidCastException HResult=0x80004002 SelectedItem SelectedValue
»
WPF Kurze Zeit in Grid Spalten anpassen. Anzeige Zeit Format
»
WPF: Combobox Selected Value ermitteln und zuweisen
»
WPF: Combobox füllen
»
WPF: Hintergrundfarbe einer Spalte an Daten binden
»
WPF Hintergrundfarbe einer Spalte ändern
»
WPF: Datum aus Datumsfeld Datepicker speichern
»
WPF Datagrid: Spalte wird nicht angezeigt

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de