2011-04-18 45 views
38

我創建了一個Person類,看起來像這樣:如何將特定值傳遞給轉換器參數?

public class Person 
{ 
    public enum GenderType 
    { 
     Female, 
     Male 
    } 

    public string Name 
    { 
     get; set; 
    } 

    public GenderType? Gender 
    { 
     get; set; 
    } 
} 

接下來,我創建了要提出Person類型對象的數據模板。
這裏是XAML代碼:

<DataTemplate 
    x:Key="personTemplate" 
    DataType="{x:Type model:Person}"> 
    <StackPanel> 
    <RadioButton 
     Content="Female" 
     IsChecked="{Binding Path=Gender, 
        Converter={StaticResource genderConverter}, 
        ConverterParameter=???}"/> 
    <RadioButton 
     Content="Male" 
     IsChecked="{Binding Path=Gender, 
        Converter={StaticResource genderConverter}, 
        ConverterParameter=???}"/> 
    <RadioButton 
     Content="Not specified" 
     IsChecked="{Binding Path=Gender, 
        Converter={StaticResource genderConverter}, 
        ConverterParameter=???}"/> 
    </StackPanel> 
</DataTemplate> 

當然的??? S IN的代碼將無法正常工作:)問題是,我想創建一個genderConverter轉換器,它會比較給定值,即personObject.Gender,反對給出參數Person.GenderType中提供的值,如果值匹配則返回true

我不知道如何分別爲第一個,第二個和第三個單選按鈕通過轉換器參數Person.GenderType.FemalePerson.GenderType.Malenull

回答

64

嘗試使用x:Static標記擴展:

<RadioButton 
     Content="Female" 
     IsChecked="{Binding Path=Gender, 
        Converter={StaticResource genderConverter}, 
        ConverterParameter={x:Static model:GenderType.Female}}"/> 

或者,你可以只通過一個字符串,並使用Enum.Parse到字符串轉換爲轉換枚舉類型:

<RadioButton 
     Content="Female" 
     IsChecked="{Binding Path=Gender, 
        Converter={StaticResource genderConverter}, 
        ConverterParameter=Female}"/> 

-

GenderType gender = (GenderType)Enum.Parse(typeof(GenderType), parameter.ToString()); 
6

由於您正在創建自己的轉換器,爲什麼你不只是發送一個可空的布爾作爲轉換器參數?

因此對於male,female,not specified發送true,false,null

如果你不想這樣做,你將不得不引用您的命名空間,像這樣開頭:

xmlns:myNamespace="clr-namespace:MyNamespace" 

然後

<RadioButton 
    Content="Male" 
    IsChecked="{Binding Path=Gender, 
       Converter={StaticResource genderConverter}, 
       ConverterParameter=x:Static myNamespace:Person.GenderType.Male}"/> 

您的單選按鈕。

相關問題