2009-12-08 8 views
6

fácil para todos ustedes ...Silverlight - ¿cómo puedo obtener el texto del elemento seleccionado en un cuadro combinado

Soy nuevo en Silverlight y cosas realmente falta como tablas de datos y cosas. En lo que también estoy luchando actualmente es en cómo obtener el texto del elemento actualmente seleccionado de mi combobox. En winforms lo habría hecho:

ComboBox myCombo = new ComboBox....... 
string selected = myCombo.Text; 

estoy luchando cómo obtener esta información a cabo.

Respuesta

9

El elemento seleccionado de su cuadro combinado es cualquier tipo de elemento está llevando a cabo actualmente. Así que si se establece la unión a una colección de cadenas, entonces el elemento seleccionado será una cadena:

string mySelectedValue = ((string)MyComboBox.SelectedItem); 

Si se trata de un objeto más complejo que tendrá que emitir y utilizar el objeto esperado. Si tiene XAML utilizando la clase de elemento del cuadro de lista, como:

<ComboBox x:Name="MyComboBox"> 
    <ComboBox.Items> 
     <ComboBoxItem> 
      <TextBlock Text="Hello World"/> 
     </ComboBoxItem> 
    </ComboBox.Items> 
</ComboBox> 

allí tendría que acceder al elemento seleccionado como esto:

string mySelectedValue = 
    ((TextBlock)((ComboBoxItem)MyComboBox.SelectedItem).Content).Text; 
+0

Creo que Calanus es la respuesta directa a la pregunta – Raghurocks

+0

Mi respuesta es 3 años de edad. No he estado en Silverlight por un tiempo, así que es plausible que la respuesta de Calanus funcione en la versión actual de Silverlight; No puedo comentar sobre eso. No creo que haya sido así para los ricos artículos del cuadro combinado como el que se describe aquí cuando respondí. –

+0

No funciona en la última Silverlight. Obtuve "No se puede lanzar el objeto de tipo 'System.Windows.Controls.ComboBoxItem' para escribir 'System.String'." –

-1
myCombo.SelectedItem.Content 

devolverá el contenido de la ComboBoxItem. Puede ser un TextBlock, etc., dependiendo de lo que tenga allí y de lo que esté utilizando para una plantilla de artículo.

+1

No, eso no funciona 1) porque SelectedItem no es una cadena y 2) incluso si lo hace .ToString() en él, a continuación, devuelve System.Windows.Controls.ComboBoxItem. Sé que probablemente pueda analizar esto y obtener la información, pero seguramente hay una manera más fácil. – Calanus

7

derecho, la respuesta es utilizar myCombo.SelectionBoxItem.ToString()

+0

Confirmar funciona en la última Silverlight –

3

Para un objeto complejo, el uso de la reflexión con la propiedad DisplayMemberPath:

var itemType = cbx.SelectedItem.GetType(); 
var pi = itemType.GetProperty(cbx.DisplayMemberPath); 
var stringValue = pi.GetValue(cbx.SelectedItem, null).ToString(); 
+0

Muchas gracias, Su solución es la que funciona en todas las situaciones – sepisoad

0

Si usted tiene un cuadro combinado simple para una matriz de cadenas, se puede obtener la cadena seleccionada utilizando

(string)e.AddedItems[0]; 

Supongamos que tengo un combo de lista de productos y quiero saber el nombre del producto seleccionado. Así, en el SelectionChanged Evento escribo el siguiente código:

private void productCombo_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) 
     { 
      string product_type=(string)e.AddedItems[0]; 
     } 
1
string txt=(comboboxID.SelectedItem as BindingClass).Text.ToString(); 

string value=(comboboxID.SelectedItem as BindingClass).Value.ToString(); 


public class BindingClass 
{ 
    public string Text 
     { 
     set; 
      get; 
     } 

    public string Value 
     { 
     set; 
      get; 
     } 
} 
+1

Conjunto privado; configurará el campo de propiedad en privado. – PhilipChrist

1
((ComboBoxItem)comboBox1.SelectedItem).Content.ToString() 

lo tengo trabajó por esta declaración.

Cuestiones relacionadas