如何将特定值传递给转换器参数?

我创build了一个类Person,如下所示:

public class Person { public enum GenderType { Female, Male } public string Name { get; set; } public GenderType? Gender { get; set; } } 

接下来,我创build了要呈现Persontypes的对象的数据模板。
这里是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的代码将无法正常工作:)问题是,我想创build一个genderConverter转换器将比较给定的值,即personObject.Gender ,与参数中提供的给定的Person.GenderType值,如果值比赛。

我不知道如何使转换器参数分别传递给Person.GenderType.FemalePerson.GenderType.Malenull ,分别用于第一个,第二个和第三个单选button。

尝试使用x:Static标记扩展名:

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

或者,你可以传递一个string,然后使用Enum.Parse将该string转换为转换器中的枚举types:

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

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

既然你正在创build你自己的转换器,为什么不只是发送一个可空的布尔作为转换器参数?

所以对于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}"/> 

为您的单选button。