wpf 组合框和 IValueConverter

wpf Combobox and IValueConverter

我对 WPF 比较陌生,一直在尝试一些小测试来提高我的知识。我目前正在尝试使用 Combobox 来 select 一个项目,并基于 selection,使用 IValueConverter 更改 MainForm 背景的颜色,如下所示:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if(value != null)
        {
            if (value.ToString() == "Male")
            {
                return new SolidColorBrush(Color.FromArgb(255, 27, 161, 226));
            }
            else
            {
                return new SolidColorBrush(Color.FromArgb(255, 216, 0, 115));
            }
        }
        return null;
    }

我的问题是该值返回“System.Windows.Controls.ComboBoxItem:女性” 或System.Windows.Controls.ComboBoxItem:男。 执行此比较的正确方法是什么?

我的完整 MainWindow Xaml 是:

<Window x:Class="MVVM.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:MVVM"
    xmlns:m="clr-namespace:MVVM.Models"
    xmlns:vm="clr-namespace:MVVM.ViewModels"
    xmlns:converters="clr-namespace:MVVM.ViewModels.Converters"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Window.Resources>
    <m:Person x:Key="person"/>
    <converters:BackgroundConverter x:Key="converter"/>
    <vm:ViewModelBase x:Key="viewModel"/>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource person}}"
      Background="{Binding Gender, Converter={StaticResource converter}}">
    <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
        <TextBox Text="{Binding Name, Mode=TwoWay}"/>
        <TextBox Text="{Binding LastName, Mode=TwoWay}"/>
        <TextBlock Text="{Binding FullName}" FontSize="20"/>
        <ComboBox SelectedValue="{Binding Gender, Mode=TwoWay}">
            <ComboBoxItem>Male</ComboBoxItem>
            <ComboBoxItem>Female</ComboBoxItem>
        </ComboBox>
        <Button Content="Simple Command" Command="{Binding SimpleCommand, Source={StaticResource viewModel}}"/>
    </StackPanel>
</Grid>

感谢您的帮助。

您可以将字符串添加到组合框中。 ComboBox 项目将在幕后创建:

<ComboBox SelectedValue="{Binding Gender, Mode=TwoWay}">
    <sys:String>Male</sys:String>
    <sys:String>Female</sys:String>
</ComboBox>

其中 sys 在命名空间声明中:

xmlns:sys="clr-namespace:System;assembly=mscorlib"