将ObservableCollection <xmlnode>绑定到combobox wpf </xmlnode>

时间:2012-06-27 10:04:56

标签: c# wpf .net-4.0

我正在尝试将组合框绑定到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的名称属性: enter image description here

更新

我尝试过以两种不同的方式使用DisplayMemberPath,但组合框仍然没有数据:

DisplayMemberPath="{Binding XPath=name}" ItemsSource="{Binding ItemParameters}"
DisplayMemberPath="{Binding XPath=InnerXml/name}" ItemsSource="{Binding ItemParameters}"

解决方案:

这就是诀窍,希望它能帮助别人:

<ComboBox DisplayMemberPath="@name" ItemsSource="{Binding ItemParameters}"

1 个答案:

答案 0 :(得分:3)

首先,您要同时设置PathXPath,这是令人困惑的属性,其次是绑定ItemsSource,这与您想要的内容无关在项目中显示 。要么使用DisplayMemberPathItemTemplateItemsSource就应该绑定到ItemParameters