Windows Phone 8.1 XAML:将枚举值放入 XAML 属性

本文关键字:XAML 属性 枚举 Phone Windows | 更新日期: 2023-09-27 18:35:37

这是我的枚举结构:

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

取而代之的是:

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

我想要这样的东西:(x:Name 属性并不重要。任何属性都可以)

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

我该怎么做?

Windows Phone 8.1 XAML:将枚举值放入 XAML 属性

你只需要一个这样的枚举转换器。

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" />

请在此处查找工作示例。