我正在尝试将组合框绑定到ObservableCollection。当显示表单时,组合框是空的。与字符串类型的ObservableCollection相同的代码完美地工作。我感觉我的XPath是错的。欢迎提出任何建议:
XAML:
<ComboBox ItemsSource="{Binding ItemParameters, XPath=InnerXml/name,Mode=TwoWay}" SelectedIndex="0" Margin="2" VerticalAlignment="Top" HorizontalContentAlignment="Stretch" Grid.Row="1" Grid.Column="1" Height="24" />
ObservableCollection XmlNode:
public ObservableCollection<XmlNode> _itemParameters = new ObservableCollection<XmlNode>();
public ObservableCollection<XmlNode> ItemParameters
{
get { return _itemParameters; }
set { _itemParameters = value; }
}
组合框应显示集合中每个XmlNode的名称属性:
更新
我尝试过以两种不同的方式使用DisplayMemberPath,但组合框仍然没有数据:
DisplayMemberPath="{Binding XPath=name}" ItemsSource="{Binding ItemParameters}"
DisplayMemberPath="{Binding XPath=InnerXml/name}" ItemsSource="{Binding ItemParameters}"
解决方案:
这就是诀窍,希望它能帮助别人:
<ComboBox DisplayMemberPath="@name" ItemsSource="{Binding ItemParameters}"
答案 0 :(得分:3)
首先,您要同时设置Path
和XPath
,这是令人困惑的属性,其次是绑定ItemsSource
,这与您想要的内容无关在项目中显示 。要么使用DisplayMemberPath
或ItemTemplate
,ItemsSource
就应该绑定到ItemParameters
。