DotNetToscana
User Group Toscano su .NET

Creare una lista a partire dagli elementi di un enumeratore

Article
Comments (0)
History (10)
100% of people found this useful

Creare una lista a partire dagli elementi di un enumeratore

Autore: Andrea Angella

Un enumeratore è un costrutto offerto dai linguaggi di programmazione per definire un elenco fissato di elementi. Sorge spesso la necessità di ottenere una lista contenente gli elementi di un tipo enumeratore in modo da utilizzarla come sorgente dati in un controllo di selezione. In questo tip viene mostrato come popolare un controllo combo box in WPF utilizzando un'opportuna funzione di utilità specificatamente creata per risolvere questo problema.

Consideriamo l'enumeratore contenente tutti gli stati dell'unione europea:

enum EuropeanCountries
{
Austria, Belgium, Bulgaria, Cyprus, CzechRepublic, Denmark,
Estonia, Finland, France, Germany, Greece, Hungary,
Ireland, Italy,Latvia, Lithuania, Luxembourg, Malta,
Netherlands, Poland, Portugal, Romania, Slovakia,
Slovenia, Spain, Sweden, UnitedKingdom
}

Il metodo EnumToList<T> permette di ottenere la lista degli elementi di un qualsiasi tipo enumeratore:

class EnumHelper
{
public static List<T> EnumToList<T>()
{
Type enumType
= typeof(T);

// Can't use type constraints on value types, so have to do check like this
if (enumType.BaseType != typeof(Enum))
throw new ArgumentException("T must be of type System.Enum");

Array enumValArray
= Enum.GetValues(enumType);

List
<T> enumValList = new List<T>(enumValArray.Length);

foreach (int val in enumValArray)
{
enumValList.Add((T)Enum.Parse(enumType, val.ToString()));
}

return enumValList;
}
}

Considerando la semplice interfaccia grafica definita dal seguente XAML...

<Window x:Class="EnumToList.Window1"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
Title
="Enum to List Demo" Height="100" Width="300">
<Grid>
<StackPanel Name="stackPanel1" VerticalAlignment="Top">
<Label Height="27" Name="label1" VerticalAlignment="Top" >European Countries:</Label>
<ComboBox Height="23" Name="cbEuropeanCountries" VerticalAlignment="Top" />
</StackPanel>
</Grid>
</Window>

...ecco come popolare la combo box:

public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
cbEuropeanCountries.ItemsSource
= EnumHelper.EnumToList<EuropeanCountries>();
}
}

EnumToList<T> è un metodo che può essere utilizzato con qualunque enumeratore e conviene aggiungerlo nella lista dei metodi di utilità da utilizzare nelle proprie applicazioni.

 

Recent Comments

No comments exist yet for this page.
View More
Powered by Community Server (Commercial Edition), by Telligent Systems