C# 基于对象枚举值将图像绑定到组合框

C# 基于对象枚举值将图像绑定到组合框,c#,wpf,image,binding,valueconverter,C#,Wpf,Image,Binding,Valueconverter,我有一个Character类,它的属性Gender是枚举。我想让我的代码做的是根据角色的性别切换图像(如果角色是男性=男性图像) 我遇到的问题是如何正确访问和获取此枚举值。你看,我正在创建一个类型为Character的可观察集合。然后将此集合绑定到组合框,然后通过ItemTemplate显示DisplayMemberPath 我相信我正在执行所有绑定权限,但我没有在值转换器中正确访问角色性别属性 XAML:引用转换器和组合框 xmlns:converters="clr-namespace:Ima

我有一个Character类,它的属性Gender是枚举。我想让我的代码做的是根据角色的性别切换图像(如果角色是男性=男性图像)

我遇到的问题是如何正确访问和获取此枚举值。你看,我正在创建一个类型为Character的可观察集合。然后将此集合绑定到组合框,然后通过ItemTemplate显示DisplayMemberPath

我相信我正在执行所有绑定权限,但我没有在值转换器中正确访问角色性别属性

XAML:引用转换器和组合框

xmlns:converters="clr-namespace:ImageViaGenderTest_2014"
Title="MainWindow" Height="350" Width="1004.932">
<Window.Resources>
    <converters:GenderToIconFilenameConverter x:Key="IconConverter"/>
</Window.Resources>


 <ComboBox x:Name="Character_ComboBox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="328" Height="25">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Width="50" Text="{Binding Name}"/>
                        <TextBlock Width="50" Text="{Binding Level}"/>
                        <Image Source="{Binding Gender, Converter={StaticResource IconConverter}}"/>
                    </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
字符类:

public class Character 
{
    public string Name { get; set; }
    public int Level { get; set; }
    public Gender _Gender { get; set; }
}
public enum Gender
{
    Male, Female
}
性别枚举:

public class Character 
{
    public string Name { get; set; }
    public int Level { get; set; }
    public Gender _Gender { get; set; }
}
public enum Gender
{
    Male, Female
}
我是否错误地引用了我的角色性别枚举?还是我忘了什么? 我也从这个问题中得到了帮助:
有一种纯xaml溶液

    <ComboBox x:Name="Character_ComboBox"
              HorizontalAlignment="Left"
              VerticalAlignment="Top"
              Width="328"
              Height="25">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Width="50"
                               Text="{Binding Name}" />
                    <TextBlock Width="50"
                               Text="{Binding Level}" />
                    <Image x:Name="gender" />
                </StackPanel>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding _Gender}"
                                 Value="Female">
                        <Setter Property="Source"
                                TargetName="gender"
                                Value="character1.jpg" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding _Gender}"
                                 Value="Male">
                        <Setter Property="Source"
                                TargetName="gender"
                                Value="character2.jpg" />
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

这种方法不需要任何转换器,当您的选择较少时,这种方法更为有益


这里发生的事情是,我们已经在模板上指定了DataTrigger,我们检查了Gender属性的值,当它满足某些条件时,我们相应地设置了图像源。

这是可行的,但DataTrigger绑定必须是有效的。强调“性别”而不是“性别”。谢谢你的帮助!