给定XML
文件以定义ComboBox ItemsSource
,有人可以解释和更正以下 XAML 吗?
XAML:
<ComboBox Name="cbConnection" DataContext="{Binding Source=c:tempConnectionList.xml, XPath=DBConnection}" ItemsSource="{Binding XPath=ComboItem}" DisplayMemberPath="Key" SelectedValuePath="Value">
c:\temp\ConnectionList.xml:
<?xml version="1.0" encoding="utf-8" ?>
<DBConnection>
<ComboItem>
<Key>Computer-A</Key>
<Value>Server=COMPA;Database=MyDB;Integrated Security=SSPI;</Value>
</ComboItem>
<ComboItem>
<Key>Computer-B</Key>
<Value>Server=COMPBSQL2012STD;Database=MyDB;Integrated Security=SSPI;</Value>
</ComboItem>
</DBConnection>
你不一定需要玩弄 DataContext。 只需适当地设置项目源。
- 设置 XMLDataProvider,并让它读取 xml 文件并向其他 WPF 元素提供数据。项目源应指向此提供程序。
- 向 XML 添加结束标记
- 修复 XPath 查询以查询名为 ComboItem 的所有节点,而不仅仅是顶级节点。
这是XMLDataProvider,把它放在页面的资源字典中:
<XmlDataProvider x:Key="XmlData"
Source="c:tempConnectionList.xml">
</XmlDataProvider>
这是更正的组合框:
<ComboBox x:Name="cbConnection"
ItemsSource="{Binding Source={StaticResource XmlData}, XPath=//ComboItem}"
DisplayMemberPath="Key"
SelectedValuePath="Value" />
以下是更正的 XML:
<?xml version="1.0" encoding="utf-8" ?>
<DBConnection>
<ComboItem>
<Key>Computer-A</Key>
<Value>Server=COMPA;Database=MyDB;Integrated Security=SSPI;</Value>
</ComboItem>
<ComboItem>
<Key>Computer-B</Key>
<Value>Server=COMPBSQL2012STD;Database=MyDB;Integrated Security=SSPI;</Value>
</ComboItem>
</DBConnection>