.net 如何将特定值传递给转换器参数?
我创建了一个类Person,如下所示:.net 如何将特定值传递给转换器参数?,.net,wpf,xaml,binding,converter,.net,Wpf,Xaml,Binding,Converter,我创建了一个类Person,如下所示: public class Person { public enum GenderType { Female, Male } public string Name { get; set; } public GenderType? Gender { get; set; } } 接下来,我创建了数据模板,该模板将显示Pe
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不起作用:)问题是我想创建一个genderConverter
转换器,它将给定值(即personObject.Gender
)与参数中提供的给定Person.GenderType
值进行比较,如果值匹配,则返回true
我不知道如何使转换器参数分别为第一个、第二个和第三个单选按钮传递
Person.GenderType.Female
、Person.GenderType.Male
和null
。尝试使用x:Static
标记扩展:
<RadioButton
Content="Female"
IsChecked="{Binding Path=Gender,
Converter={StaticResource genderConverter},
ConverterParameter={x:Static model:GenderType.Female}}"/>
-
既然您正在创建自己的转换器,为什么不发送一个可为null的bool作为转换器参数呢 所以对于
男性,女性,未指定
发送真,假,空
如果不想这样做,则必须在开始时引用命名空间,如下所示:
xmlns:myNamespace="clr-namespace:MyNamespace"
然后
<RadioButton
Content="Male"
IsChecked="{Binding Path=Gender,
Converter={StaticResource genderConverter},
ConverterParameter=x:Static myNamespace:Person.GenderType.Male}"/>
对于您的单选按钮。我不会将枚举强制转换到trenary,原因有几个-它模糊了枚举的预期含义,使代码可读性降低(即“男性”是真是假?为什么?),并且限制了枚举的扩展可能性(或者在将来扩展枚举时引入问题)。
xmlns:myNamespace="clr-namespace:MyNamespace"
<RadioButton
Content="Male"
IsChecked="{Binding Path=Gender,
Converter={StaticResource genderConverter},
ConverterParameter=x:Static myNamespace:Person.GenderType.Male}"/>