我试图将组合框选择的项目绑定到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”。
情况并非如此,因为什么也没选择。
答案 0 :(得分:1)
new ProjectTest("Project2")
不等于您添加到ProjectTest
集合中的任何Projects
,除非您的ProjectTest
类实现IEquatable<T>
来定义这两个具有相同名称的项目被认为是相等的。
另一种选择是将SelectedProject
属性设置为Projects
中的任何对象:
SelectedProject = Projects[1];