编程语言
首页 > 编程语言> > C#-将ObservableCollection绑定到组合框WPF

C#-将ObservableCollection绑定到组合框WPF

作者:互联网

我正在尝试将组合框绑定到ObservableCollection.当显示表单时,组合框为空.与类型为string的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的name属性:

更新:

我尝试以两种不同的方式使用DisplayMemberPath,但是组合框仍然不包含任何数据:

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

解:

这是成功的窍门,希望它也能对其他人有所帮助:

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

解决方法:

首先,您要同时设置具有冲突属性的Path和XPath,其次,您绑定ItemsSource,这与要在项目中显示的内容无关.无论使用DisplayMemberPath还是ItemTemplate,ItemsSource都应绑定到ItemParameters.

标签:wpf,c,net-4-0
来源: https://codeday.me/bug/20191201/2078564.html