如何将特定值传递给转换器参数?
我创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.Female
, Person.GenderType.Male
和null
,分别用于第一个,第二个和第三个单选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。