首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义DataContext

定义DataContext
EN

Stack Overflow用户
提问于 2013-01-22 17:15:41
回答 1查看 142关注 0票数 0

给定XML文件来定义ComboBox ItemsSource,有人能解释和更正以下XAML吗?

XAML:

代码语言:javascript
复制
<ComboBox Name="cbConnection" DataContext="{Binding Source=c:\temp\ConnectionList.xml, XPath=DBConnection}" ItemsSource="{Binding XPath=ComboItem}" DisplayMemberPath="Key" SelectedValuePath="Value">

c:\temp\ConnectionList.xml:

代码语言:javascript
复制
<?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=COMPB\SQL2012STD;Database=MyDB;Integrated Security=SSPI;</Value>
</ComboItem>
</DBConnection>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-22 17:47:08

您不一定需要在DataContext上胡闹。只需适当地设置ItemsSource即可。

  1. 设置一个XMLDataProvider,并让它读取该xml文件并向其他WPF元素提供数据。ItemsSource应该指向此提供程序。
  2. 在XML中添加一个结束标记
  3. 将XPath查询修复为查询所有名为ComboItem的节点,而不仅仅是顶级节点。

下面是XMLDataProvider,将其放在页面中的资源字典中:

代码语言:javascript
复制
<XmlDataProvider x:Key="XmlData"
                 Source="c:\temp\ConnectionList.xml">
</XmlDataProvider>

以下是更正后的ComboBox:

代码语言:javascript
复制
<ComboBox x:Name="cbConnection"
          ItemsSource="{Binding Source={StaticResource XmlData}, XPath=//ComboItem}"
          DisplayMemberPath="Key"
          SelectedValuePath="Value" />

以下是经过更正的XML:

代码语言:javascript
复制
<?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=COMPB\SQL2012STD;Database=MyDB;Integrated Security=SSPI;</Value>
    </ComboItem>
</DBConnection>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14464247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档