2014-12-29 2 views
2

Это моя Enum структура:Windows Phone 8.1 XAML: Поместите Enum Значение в XAML Атрибут

namespace MyNS 
{ 
    enum MyEnum 
    { 
     MyValOne = 1, 
     MyValTwo = 2 
    } 
} 

Вместо этого:

<RadioButton x:Name="1" /> 
<RadioButton x:Name="2" /> 

Я хочу что-то вроде этого: (The х: Имя атрибут не имеет значения. Любой атрибут нормально)

<RadioButton x:Name="MyNS.MyEnum.MyValOne" /> 
<RadioButton x:Name="MyNS.MyEnum.MyValTwo" /> 

Как я могу это сделать?

+0

Какова ваша цель? Вы хотите связать перечисления? Вы не можете связывать атрибуты, такие как 'x: Name'. –

+0

Что относительно атрибута тега? У меня есть RadioButtons значений Enum. Затем я использую их в коде. –

+1

Итак, вам нужно получить свой список из выбранного радиообъектива? – RenDishen

ответ

3

Вам просто нужен конвертер enum, подобный этому.

public class EnumRadioButtonConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     return value.ToString() == parameter.ToString(); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     return (bool)value ? Enum.Parse(typeof(MyEnum), parameter.ToString(), true) : null; 
    } 
} 

И это, как вы используете его (не забудьте дать им GroupName). Вам необходимо будет определить свойство SelectedEnum (типа MyEnum) в вашей модели просмотра, конечно.

<RadioButton IsChecked="{Binding SelectedEnum, ConverterParameter=MyValTwo, Converter={StaticResource EnumRadioButtonConverter}, Mode=TwoWay}" GroupName="MyRadioButtonGroup" /> 
<RadioButton IsChecked="{Binding SelectedEnum, ConverterParameter=MyValOne, Converter={StaticResource EnumRadioButtonConverter}, Mode=TwoWay}" GroupName="MyRadioButtonGroup" /> 

Для использования преобразователя необходимо указать его в разделе ресурсов.

<Page.Resources> 
    <local:EnumRadioButtonConverter x:Key="EnumRadioButtonConverter" /> 

Вы можете найти рабочую пробу here.

+0

Итак, как я могу получить выбранное значение RadioButton? –

+0

И я получаю ** Ресурс EnumRadioButtonConverter не найден **. Как я могу ссылаться на класс на свой XAML? –

+1

См. Мой обновленный ответ. Вам нужно будет определить свойство «SelectedEnum» и связать с ним «IsChecked». Чтобы использовать конвертер, вам сначала нужно будет ссылаться на него в xaml. –

Смежные вопросы