私はWPアプリケーションでそう列挙使用:WPのlistpickerに列挙型をバインドする方法は?
パブリック列挙性別 { 男= 0、 女性、 他 } iはListpickerアイテムが性別列挙項目であるコードを書くことができる方法
。明確にするために、私はListpickerから性別を選択してほしい。助けてください。
私はWPアプリケーションでそう列挙使用:WPのlistpickerに列挙型をバインドする方法は?
パブリック列挙性別 { 男= 0、 女性、 他 } iはListpickerアイテムが性別列挙項目であるコードを書くことができる方法
。明確にするために、私はListpickerから性別を選択してほしい。助けてください。
このように、列挙型のプロパティにバインドするとしますか?
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;
WP4ではEnum.GetValuesを使用できません – Soonts
あなたがやってみましたこのようなもの? http://stackoverflow.com/questions/3935953/how-do-i-bind-an-enum-to-my-listbox –
ありませんが、今、おかげで非常に有用だったおかげ –
をしようとしてイム。しかし、私は今他の問題があります。 Listpickerのアイテム数が3(または3未満)の場合、現在のページではピックピッカーがコンボボックスとして開きますが、3を超えると他のページが開きます。コンボボックスとしてではありません。どのように私はこの問題を解決する? –