如何获取组合框的选定项目以绑定到对象

时间:2019-03-26 12:22:05

标签: c# wpf xaml mvvm

我试图将组合框选择的项目绑定到View模型上的对象。它绑定了itemsource并将保存选定的项目,但是如果我在加载时填充选定项目的值,它将不会显示。

这是ComboBox的XAML:

   <ComboBox Name="cbxProjects"
                      ItemsSource="{Binding Projects}"
                      DisplayMemberPath="Name"
                      SelectedItem="{Binding Path=SelectedProject, Mode=TwoWay}"

这是我要绑定的类:

    private Collection<ProjectTest> projects;
    public Collection<ProjectTest> Projects
    {
        get { return projects; }
        set
        {
            projects = value;
            RaisePropertyChangedEvent("Projects");
        }
    }

    private ProjectTest selectedProject;
    public ProjectTest SelectedProject
    {
        get { return selectedProject; }
        set
        {
            selectedProject = value;
            RaisePropertyChangedEvent("SelectedProject");
        }
    }

这是我的视图模型初始化器:

    public MyViewModel(ProjectHelper projectHelper)
    {

        Projects = new Collection<ProjectTest>();
        Projects.Add(new ProjectTest("Project1"));
        Projects.Add(new ProjectTest("Project2"));
        Projects.Add(new ProjectTest("Project3"));
        SelectedProject = new ProjectTest("Project2");

    }

运行此程序时,我希望组合框在下拉列表中有3个项目,并且已经选择了“ Project2”。

情况并非如此,因为什么也没选择。

1 个答案:

答案 0 :(得分:1)

new ProjectTest("Project2")不等于您添加到ProjectTest集合中的任何Projects,除非您的ProjectTest类实现IEquatable<T>来定义这两个具有相同名称的项目被认为是相等的。

另一种选择是将SelectedProject属性设置为Projects中的任何对象:

SelectedProject = Projects[1];