我想要一个组合框的源绑定到特定键的Oject.Name字段。 我能找到的唯一示例是“字符串字典”。
这是我尝试过的:
public class XMLTypeData
{
public string Abbreviation;
public string Name;
public string Value;
public Dictionary<string, XMLTypeData> Children = new Dictionary<string, XMLTypeData>();
}
我之前已将值加载到字典中
Dictionary<Type, List<XMLTypeData>> XML = new Dictionary<Type, List<XMLTypeData>>();
我不确定这是否可能
<ComboBox x:Name="CBType" DisplayMemberPath="Key" SelectedValuePath="Value.Name" ItemsSource="{Binding XML}" Text="{Binding Source={StaticResource UserControlBindings},Path=SelectedTreeEntity.Type/>
答案 0 :(得分:1)
感谢Fabulous,我得以实现这一目标。问题是我做了一个字典的清单。我将字典更改如下:
Dictionary<Type, XMLTypeData> XML = new Dictionary<Type, XMLTypeData>();
然后我将XAML中的DisplayMemberPath和SelectedValuePath属性更改如下:
<ComboBox x:Name="CBType" DisplayMemberPath="Key" SelectedValuePath="Value" ItemsSource="{Binding XML}" Text="{Binding Source={StaticResource UserControlBindings},Path=SelectedTreeEntity.Type/>
还要注意,我将组合框的itemsource设置为层次结构的相关子字典:
CBType.ItemsSource = ElementaryTypes[SelectedType].Children;
并设置另一个组合框,该组合框取决于层次结构的上级:
private void CBType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(CBType.SelectedItem is KeyValuePair<string,XMLTypeData> KeyPair)
{
if (ElementaryTypes[SelectedType].Children.Keys.Contains(KeyPair.Key))
{
CBSubType.ItemsSource = ElementaryTypes[SelectedType].Children[KeyPair.Key].Children;
}
}
}