[WPF – NET 10.0] - [SelectedItem] Como recuperar un texto seleccionado en un ComboBox

Descripción general:

Este código muestra como recuperar en una cadena el valor que muestra un ComboBox mediante la propiedad SelectedItem y como mostrar en el ComboBox un valor pasado como texto.

Últimamente me estoy encontrando con problemas con código “viejo” que funcionaba perfectamente en las versiones “antiguas” de NET. pero que con el NET 10.0 no acaban de funcionar exactamente como deberían

Una de ellas es recuperar como texto el valor que muestra un ComboBox. El problema que tenia es que me devolvían juntos el nombre del objeto con el valor del combo.

Después de mirar código por ahí he encontrado la razón del problema

Esta es la manera segura de hacerlo para (VB.NET):


↑↑↑

Código de ejemplo

Paso Uno – Leer el valor seleccionado de un ComboBox como texto

Objetivo: Quiero tener en una variable String, el valor que muestra el ComboBox


     '--------------------------------------- 
        ' Leer el valor del ComboBox 
        Dim textoSeleccionadoEnElComboBox As String = String.Empty 

        If ComboBoxEjemplo.SelectedItem IsNot Nothing Then 
            ' Obtener el valor[ComboBoxItem] 
            Dim cbItem = TryCast(ComboBoxEjemplo.SelectedItem,ComboBoxItem)
            If cbItem IsNot Nothing Then 
                ' Obtener el valor[ComboBoxItem.Content] 
                If cbItem.Content IsNot Nothing Then 
                    ' Obtener el valor[ToString] 
                    textoSeleccionadoEnElComboBox = cbItem.Content.ToString()
                End If 
            Else 
                ' Caso de que los items del combo no sean ComboBoxItem 
                textoSeleccionadoEnElComboBox = ComboBoxEjemplo.SelectedItem.ToString()
            End If 
        End If 
        '/Eof 
        '--------------------------------------- 


↑↑↑

Paso Dos – Mostrar en el ComboBox un valor pasado por texto

Objetivo: Quiero que el ComboBox muestre (si existe en el ComboBox) el valor que tengo en una variable String. Si el valor no existe, se muestra el valor que se supone que es el valor NONE (normalmente es el valor cero (0), el primero de la lista)


        '--------------------------------------- 
        ' Mostrar un valor en el ComboBox 
        '--------------------------------------- 
        Dim TextoQueSePoneEnComboBox As String 
        ' Este es el valor que se busca en el ComboBox para ponerlo como seleccionado 
        ' sera el valor de una cadena que se recibe por ejemplo, a traves de un parámetro 
        TextoQueSePoneEnComboBox = "Un texto que exista en el ComboBox" 

        Dim encontrado As Boolean = False 
        Dim i As Integer = 0 
        Dim selectedTextDelBucle As String = String.Empty 

        ' localizar si existe el valor[TextoQueSePoneEnComboBox] recorriendo el combo 
        ' Bucle que recorre los Items del ComboBox 
        For i = 0 To ComboBoxEjemplo.Items.Count - 1 

            ' Obtener el valor[ComboBoxItem] 
            Dim cbItem = TryCast(ComboBoxEjemplo.Items(i),ComboBoxItem)
            If cbItem IsNot Nothing Then 
                ' Obtener el valor[ComboBoxItem.Content] 
                If cbItem.Content IsNot Nothing Then 
                    ' Obtener el valor[ToString] 
                    selectedTextDelBucle = cbItem.Content.ToString()
                End If 
            Else 
                ' Caso de que los items del combo no sean ComboBoxItem 
                selectedTextDelBucle = ComboBoxEjemplo.SelectedItem.ToString()
            End If 

           ' comprobar el valor leído del combo con el valor 
            ' que quiero poner en el combo 
            If String.Equals(selectedTextDelBucle,
                             TextoQueSePoneEnComboBox,
                             StringComparison.CurrentCultureIgnoreCase)Then 
                ' Existe, poner el valor en el combo usando el índice 
                ComboBoxEjemplo.SelectedIndex = i 
                encontrado = True 
                Exit For 
            End If 
        Next 
        If encontrado = False Then 
            ' no se ha encontrado el valor guardado en el memento 
            ' poner el valor por defecto 
            ComboBoxEjemplo.SelectedIndex = 0 
        End If 
        '/Eof 
        '---------------------------------------