键入名称显示在WPF下拉列表中

时间:2010-12-21 17:49:35

标签: wpf mvvm combobox

我正在使用MVVM将List<SelectItem>绑定到ComboBox。组合框具有正确的价值,看起来很好。但是,当我单击向下按钮查看组合框中的所有选项时,我会得到10个项目的列表,每个项目都会读取MyNamespace.SelectItem。如果我选择#2,则组合框中的值将显示为2

以下是SelectItem的代码:

public class SelectItem
{
    public string Value { get; set; }
    public string Display { get; set; }
}

我的XAML:

<ComboBox ItemsSource="{Binding Path=MyList}" DisplayMemberPath="Display" SelectedValue="{Binding Path=MyListValue, Mode=TwoWay}" />

这是我排队SelectItems

列表的地方
        MyList= new List<SelectItem>();
        for (int i = 1; i <= 10; i++)
        {
            var page = new SelectItem()
            {
                Display = i.ToString(),
                Value = i.ToString()
            };
            MyList.Add(page);
            if (i == 1)
                MyListValue = page;
        }

2 个答案:

答案 0 :(得分:2)

检查是否有拼写错误。

使用以下代码:

public class SelectItem
{
    public string Value { get; set; }
    public string Display { get; set; }
}

public class SelectItemViewModel
{
    public List<SelectItem> MyList { get; set; }
    public SelectItem MyListValue { get; set; }

    public SelectItemViewModel()
    {
        MyList = new List<SelectItem>();
        for (int i = 1; i <= 10; i++)
        {
            var page = new SelectItem()
            {
                Display = i.ToString(),
                Value = i.ToString()
            };
            MyList.Add(page);
            if (i == 1)
                MyListValue = page;
        }
    }
}

初​​始化:

public MainWindow()
{
    DataContext = new SelectItemViewModel();
}

XAML:

<ComboBox HorizontalAlignment="Center"
            VerticalAlignment="Center"
            ItemsSource="{Binding Path=MyList}"
            DisplayMemberPath="Display"
            SelectedValue="{Binding Path=MyListValue, Mode=TwoWay}" />

我能够在ComboBox中看到数字。没有类型名称。

答案 1 :(得分:0)

如果您在应用程序中使用主题并具有类似

的内容
<ResourceDictionary Source="WhistlerBlue.xaml" />

在App.xaml中,尝试通过添加

覆盖组合框的项目样式
<ComboBox.ItemContainerStyle>
    <Style TargetType="ComboBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ComboBox.ItemContainerStyle>