您在此行中设置的类别 -
NodeCategory = some_list_of_other_objects.Category;
以及您的类别收藏中的一份(ItemsSource="{Binding Categories}"
) 应该指的是同一个对象。如果他们不是那么SelectedItem
行不通的。
解决方案1 -
您也可以尝试使用SelectedValuePath
像这样 -
<ComboBox x:Name="categoryComboBox"
ItemsSource="{Binding Categories}"
DisplayMemberPath="Name"
SelectedValuePath="Name"
SelectedValue="{Binding NodeCategory, Mode=TwoWay}" />
在代码中你可以做这样的事情 -
private string _NodeCategory;
public string NodeCategory
{
get
{
return _NodeCategory;
}
set
{
_NodeCategory = value;
OnPropertyChanged("NodeCategory");
}
}
并像这样设置所选项目 -
NodeCategory = some_list_of_other_objects.Category.Name;
并使用这样选择的值 -
Category selectedCategory =
some_list_of_other_objects.FirstOrDefault(cat=> cat.Name == NodeCategory);
or
Category selectedCategory =
Categories.FirstOrDefault(cat=> cat.Name == NodeCategory);
解决方案2-
另一种可能的解决方案是 -
NodeCategory =
Categories.FirstOrDefault(cat=> cat.Name == some_list_of_other_objects.Category.Name);
这样你的NodeCategory
属性将具有对象的引用Categories
收集和SelectedItem
将工作。