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: Combobox Selected Value ID ermitteln

 

 

Aufgabe:

Wie ermittelt man den ausgewählten Wert in WPF bei einer Combobox

 

Ich möchte bei einer Combobox in WPF ermitteln, welche Nummer das ausgewählte Element besitzt.

Die Elemente in der Combobox wurden über ComboBoxItem über Content als Anzeigetext und Tag als Wert geladen

 

Lösung:

Man kann den Wert oder hier das Tag/Key über die vorige Umwandlung des ComboBoxItem ermitteln.

 

Trick:

Über die Zuweisung des SelectedValuePath auf das Tag des SelectedItem, kann man sich eine umständliche Selection sparen.

Wenn man SelectedValuePath=Tag wählt, dann kann man beim Start einfach der kompletten ComboBox einen numerischen Wert zuweisen.

<ComboBox x:Name="Combo_IDMaschine" Grid.Row="4" Grid.Column="1"

     HorizontalAlignment="Left" Width="265"

          SelectedValuePath="Tag"

> 

</ComboBox>

 

 

Zuweisen einer Nummer als Wert

Combo_IDMaschine.SelectedValue = 123;

 

 

 

 

Code Beispiel:

ComboBoxItem item = Combo_IDMaschine.SelectedItem as ComboBoxItem ;

data.IDMaschine = (int) item.Tag; //*get value of combobox

 

//Or

data.IDMaschine = (int) ((ComboBoxItem) Combo_IDMaschine.SelectedItem).Tag ; //*get value of combobo

 

 

 

Auszug aus Überwachung, Debug-Fenster

 

Name

Value

Type

Combo_IDMaschine.SelectedItem

{System.Windows.Controls.ComboBoxItem: Fräser 1}

object {System.Windows.Controls.ComboBoxItem}

Combo_IDMaschine

{System.Windows.Controls.ComboBox Items.Count:6}

System.Windows.Controls.ComboBox

Combo_IDMaschine.Tag

null

object

Combo_IDMaschine.SelectionBoxItem

"Fräser 1"

object {string}

Combo_IDMaschine.SelectedValue

{System.Windows.Controls.ComboBoxItem: Fräser 1}

object {System.Windows.Controls.ComboBoxItem}

Combo_IDMaschine.SelectedIndex

2

int

((System.Windows.FrameworkElement)Combo_IDMaschine.SelectedValue).Tag

4

object {int}

((System.Windows.FrameworkElement) Combo_IDMaschine.SelectedItem).Tag

4

object {int}

 

 

Füllen einer Combobox

Mit Tag als Werte-Speicher für ID oder Key

private void load_Combobox_Maschinen()

        {

            //----------------< load_Combobox_Maschinen() >----------------

            Combo_IDMaschine.Items.Clear();

 

            try

            {

                //----< Daten laden >----

                //< get_Data >

                var data = (from tbl in db.tblBase_Maschinen

                            orderby tbl.Maschine ascending

                            select tbl);

                //</ get_Data >

 

                //--< @Loop: Rows >--

                foreach (var row in data)

                {

                    ComboBoxItem item = new ComboBoxItem();

                    item.Content = row.Maschine;

                    item.Tag= row.IDMaschine;   //key-value

                    Combo_IDMaschine.Items.Add(item);

                }

                //--</ @Loop: Rows >--

 

                //----</ Daten laden >----

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message);

            }

            //----------------</ load_Combobox_Maschinen() >----------------

        }

 

 

 

 

 

Lesen und Speichern einer Combobox

public void save_Data()

{

    //------------< save_Data() >------------

    string sID = tbxID.Text;

    //< check >

    if (sID == ""return;

    //</ check >

 

    int ID = Convert.ToInt32(sID);

 

    tblBase_Mitarbeiter data;

    data = db.tblBase_Mitarbeiter.SingleOrDefault(n => n.IDMitarbeiter == ID);

    if (data != null)

    {

        data.dtCreated = DateTime.Now;

        data.Vorname = tbxVorname.Text;

        data.Nachname  = tbxNachname.Text;

        data.Personalnummer = tbxPersonalNr.Text;

 

        data.IDMaschine = (int) ((ComboBoxItem) Combo_IDMaschine.SelectedItem).Tag ; //*get value of combobox

 

        //< save >

        db.SaveChanges();               //ID: -99999->16

        load_DataGrid();

        //</ save >

    }

    //------------</ save_Data() >------------

}

 

 

 

Zuweisen einer Nummer als Wert

Combo_IDMaschine.SelectedValue = 123;

 

 

 

Beispiel: Laden eines Datensatzes, Zuweisen auf eine Combobox

public void load_Dataset_byID(int ID)

{

    //----------------< load_Dataset_byID() >----------------

    try

    {

        var data = db.tblBase_Mitarbeiter.FirstOrDefault(id => id.IDMitarbeiter == ID);

        if (data != null)

        {

            //--< felder fuellen >--

            tbxID.Text = data.IDMitarbeiter.ToString();

            tbxVorname.Text = data.Vorname.ToString() ;

            tbxNachname.Text = data.Nachname.ToString();

            tbxPersonalNr.Text = data.Personalnummer;

            Combo_IDMaschine.SelectedValue = data.IDMaschine; //123

            //--</ felder fuellen >--

        }

    }

    catch (Exception ex)

    {

       // System.Diagnostics.Debug.WriteLine(ex);

    }

 

    //----------------</ load_Dataset_byID() >----------------

}

 

 

 

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