2010-10-14 35 views
5

Tengo un proyecto de Silverlight (WP7) y me gustaría vincular una enumeración a un cuadro de lista. Esta es una enumeración con valores personalizados, ubicada en una biblioteca de clases. ¿Cómo hago esto?¿Cómo puedo vincular una enumeración a mi listbox?

+1

posible duplicado de [Databinding an enum property to ComboBox in WPF] (http://stackoverflow.com/questions/58743/databinding-an-enum-property-to-a-combobox-in-wpf) – Andrey

Respuesta

11

En Silverlight (WP7), el método Enum.GetNames() no está disponible. Puede usar los siguientes

public class Enum<T> 
{ 
    public static IEnumerable<string> GetNames() 
    { 
     var type = typeof(T); 
     if (!type.IsEnum) 
      throw new ArgumentException("Type '" + type.Name + "' is not an enum"); 

     return (
      from field in type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static) 
      where field.IsLiteral 
      select field.Name).ToList<string>(); 
    } 
} 

El método estático arrojará la colección de cadenas enumerable. Puede vincular eso a un elemento de la lista de elementos. Como

this.listBox1.ItemSource = Enum<Colors>.GetNames(); 
+0

Then , la siguiente pregunta es, ¿cómo asignas, con el enlace, el valor enum seleccionado a una propiedad en el modelo de vista? He estado buscando respuestas, pero no pude encontrar ningún recurso, se aprecia cualquier dirección. Gracias. – K2so

+1

@ K2so Puede tener una propiedad en el modelo de vista vinculada a la propiedad 'SelectedItem' de' ListBox'. verifique la siguiente muestra que podría ayudarlo. https://sites.google.com/site/html5tutorials/BindingEnum.zip –

+0

¿Te importa si tomo prestado este código y te lo atribuyo en mi proyecto PhoneyTools para que la gente pueda usarlo? http://phoney.codeplex.com? –

Cuestiones relacionadas