Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何将特定值传递给转换器参数?_.net_Wpf_Xaml_Binding_Converter - Fatal编程技术网

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

.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

我创建了一个类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不起作用:)问题是我想创建一个
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}"/>