2012-02-23 10 views
1

私はWPアプリケーションでそう列挙使用:WPのlistpickerに列挙型をバインドする方法は?

パブリック列挙性別 { 男= 0、 女性、 他 } iはListpickerアイテムが性別列挙項目であるコードを書くことができる方法

。明確にするために、私はListpickerから性別を選択してほしい。助けてください。

+1

あなたがやってみましたこのようなもの? http://stackoverflow.com/questions/3935953/how-do-i-bind-an-enum-to-my-listbox –

+0

ありませんが、今、おかげで非常に有用だったおかげ –

+0

をしようとしてイム。しかし、私は今他の問題があります。 Listpickerのアイテム数が3(または3未満)の場合、現在のページではピックピッカーがコンボボックスとして開きますが、3を超えると他のページが開きます。コンボボックスとしてではありません。どのように私はこの問題を解決する? –

答えて

0

このように、列挙型のプロパティにバインドするとしますか?

public enum EnumType { Item1, Item2 } 
public EnumType Property { get; set; } 

これは私がそれをやった方法です:(コンストラクタで)

theListPicker.ItemsSource = Enum.GetValues(typeof(EnumType)); 

(XAML)

<phone:PhoneApplicationPage 
    ... 
    x:Name="_this"/> 
    ... 
    <phone:PhoneApplicationPage.Resources> 
     <local:EnumIntConverter x:Name="enumIntConverter"/> 
    </phone:PhoneApplicationPage.Resources> 
    .... 
    <toolkit:ListPicker ... 
     SelectedIndex="{Binding ElementName=_this, Path=Property, Converter={StaticResource enumIntConverter}, Mode=TwoWay} 

(あなたの名前空間のどこか)

public class EnumIntConverter : IValueConverter 
{ 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return (int)(EnumType)value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return Enum.GetValues(typeof(EnumType)).GetValue((int)value); 
    } 
} 
0123私の場合は

は、私はまた、代わりに自分の名前の列挙型の説明を使用していたので、私は上記のコードの代わりに、「コンストラクタで」ワンライナーを使用しています:

Array rawValues = Enum.GetValues(typeof(EnumType)); 
List<string> values = new List<string>(); 
foreach (EnumType e in rawValues) 
    values.Add((typeof(EnumType).GetMember(e.ToString())[0].GetCustomAttributes(typeof(DescriptionAttribute), false)[0] as DescriptionAttribute).Description); 
theListPicker.ItemsSource = values; 
+0

WP4ではEnum.GetValuesを使用できません – Soonts

関連する問題