Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

WPF: Combobox Wert zuweisen und Ausgewählten Wert ermitteln. SelectedValue

28.12.2018 (👁13391)

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() >----------------

}