2014-12-29 117 views
2

這是我的枚舉結構:的Windows Phone 8.1 XAML:把枚舉值到XAML屬性

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

取而代之的是:

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

我想是這樣的:(該X:名稱屬性並不重要,任何屬性都可以)

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

我該怎麼做?

+0

你的最終目標是什麼?你在尋找綁定枚舉嗎?你不能綁定屬性,比如'x:Name'。 –

+0

標籤屬性怎麼樣?我有Enum值的RadioButtons。然後我在代碼中使用它們。 –

+1

所以你需要從選定的單選按鈕中得到你的枚舉? – RenDishen

回答

3

你只需要一個像這樣的枚舉轉換器。

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中引用它。 –

相關問題