直接在xaml定义时xml时应该注意的!

xml数据

 <?xml version="1.0" encoding="utf-8"?>
<StringList >
<Srtring Id="1">
<Name>A</Name>
<Age>10</Age>
<Nub>001</Nub>
</Srtring>
<Srtring Id="2">
<Name>B</Name>
<Age>20</Age>
<Nub>002</Nub>
</Srtring>
<Srtring Id="3">
<Name>C</Name>
<Age>30</Age>
<Nub>003</Nub>
</Srtring>
<Srtring Id="4">
<Name>D</Name>
<Age>40</Age>
<Nub>004</Nub>
</Srtring>
<Srtring Id="5">
<Name>A</Name>
<Age>50</Age>
<Nub>005</Nub>
</Srtring>
</StringList>

如果直接在Xaml页面中定义则是:

使用XmlDataProvider,并设置key,以及Xpath的源,xpath则是xml在被绑定时起始数据的起点,但不包括自身(不设置也可以,但是需要在设置绑定时设置)

也就是xpath设定为StringList,绑定时的起点则是String

且注意的是:XAML页面中不可以包含<?xml version="1.0" ?>字样,会报错。还有需要在xml根部加上xmlns=""

例子:

   <Window.Resources>
<XmlDataProvider x:Key="xmlData" >
<x:XData>
<StringList xmlns="">
<String Id="1">
<Name>A</Name>
<Age>10</Age>
<Nub>001</Nub>
</String>
<String Id="2">
<Name>B</Name>
<Age>20</Age>
<Nub>002</Nub>
</String>
<String Id="3">
<Name>C</Name>
<Age>30</Age>
<Nub>003</Nub>
</String>
<String Id="4">
<Name>D</Name>
<Age>40</Age>
<Nub>004</Nub>
</String>
<String Id="5">
<Name>A</Name>
<Age>50</Age>
<Nub>005</Nub>
</String>
</StringList>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<Grid>
<ListView ItemsSource="{Binding Source={StaticResource xmlData},XPath=StringList/*}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="60" DisplayMemberBinding="{Binding XPath=Name}" />
<GridViewColumn Header="Age" Width="60" DisplayMemberBinding="{Binding XPath=Age}" />
<GridViewColumn Header="Nub" Width="60" DisplayMemberBinding="{Binding XPath=Nub}" />
</GridView>
</ListView.View>
</ListView> </Grid>

如果想要获取属性则是需要使用@,并且确保xpath路径正确

例如

 <ListView  ItemsSource="{Binding Source={StaticResource xmlData},XPath=/StringList/*}">
<ListView.View>
<GridView>
<GridViewColumn Header="Id" Width="60" DisplayMemberBinding="{Binding XPath=@Id}" />
<GridViewColumn Header="Id" Width="60" DisplayMemberBinding="{Binding XPath=Age}" />
<GridViewColumn Header="Id" Width="60" DisplayMemberBinding="{Binding XPath=Nub}" />
</GridView>
</ListView.View>
</ListView>

截图

WPF 使用XML作为绑定源时Xaml注意事项的更多相关文章

  1. WPF中,如何将绑定源设置到单件实例

    原文:WPF中,如何将绑定源设置到单件实例  WPF中,如何将绑定源设置到单件实例                                       周银辉 大概两个月前,曾有位朋友问我:如 ...

  2. Spinner 通过XML形式绑定数据时 无法从String.xml中读取数组

    在android应用程序中,通过XML形式给Spinner绑定数据,如果把数组放在系统的string.xml文件里,那么就有可能在运行时无法找到,导致程序异常结束,解决方法是自建一个XML文件来存放数 ...

  3. vuejs中v-bind绑定class时的注意事项

    关于v-bind绑定class的实例 作用:可用于不同样式之间的切换 <!DOCTYPE html> <html lang="en"> <head&g ...

  4. Service官方教程(9)绑定服务时的注意事项

    Binding to a Service Application components (clients) can bind to a service by calling bindService() ...

  5. WPF绑定文本时使用指定格式文本

    原文:WPF绑定文本时使用指定格式文本 Text="{Binding PlayletModel.characters,StringFormat=Cast : {0}}" Strin ...

  6. WPF窗体视图中绑定Resources文件中字符串时,抛出:System.Windows.Markup.StaticExtension

    问题描述: 在Resources.resx定义了一个静态字符串字段Title,并在WPF窗体视图中绑定为窗体的标题: Title="{x:Static local:Resources.Tit ...

  7. WPF Binding学习(四) 绑定各种数据源

    转自:http://blog.csdn.net/lisenyang/article/details/18312199 1.集合作为数据源 首先我们先创建一个模型类 public class Stude ...

  8. WPF 在事件中绑定命令(不可以在模版中绑定命令)

    其实这也不属于MVVMLight系列中的东东了,没兴趣的朋友可以跳过这篇文章,本文主要介绍如何在WPF中实现将命令绑定到事件中. 上一篇中我们介绍了MVVMLight中的命令的用法,那么仅仅知道命令是 ...

  9. [WPF 基础知识系列] —— 绑定中的数据校验Vaildation

    前言: 只要是有表单存在,那么就有可能有对数据的校验需求.如:判断是否为整数.判断电子邮件格式等等. WPF采用一种全新的方式 - Binding,来实现前台显示与后台数据进行交互,当然数据校验方式也 ...

随机推荐

  1. BITCTF-MISC

    MISC 以此笔记来记录本菜鸡做misc的历程 签到85 首先看题 提示base85 打开kali,使用python的base64库来解码(内有base85解码) (其实只要输python3即可 我还 ...

  2. 09-Node.js学习笔记-异步编程

    同步API,异步API 同步API:只有当前API执行完成后,才能继续执行下一个API console.log('before'); console.log('after'); 异步API:当前API ...

  3. JS数组去掉某一个元素

    /**数组去掉某一个元素**/ Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index &g ...

  4. poj 3061 Subsequence 二分 前缀和 双指针

    地址 http://poj.org/problem?id=3061 解法1 使用双指针 由于序列是连续正数 使用l r 表示选择的子序列的起始 每当和小于要求的时候 我们向右侧扩展 增大序列和 每当和 ...

  5. [bzoj3456]城市规划:多项式,分治

    Description 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了. 刚才说过, 阿狸的国家有n个城市, 现在国家需要在某些城市对之间建立一些贸易路线, 使得整个国家的任意两个城市都直接或 ...

  6. Redis分布式缓存实现

    基于redis分布式缓存实现 第一:Redis是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data S ...

  7. 基于V7的新版RL-USB和RL-FlashFS的NAND完整解决方案,实现更简单,用户仅需初始化FMC

    说明: 1.新版方案更加好用,不管用户使用的那家NAND,用户要做的仅仅是初始化FMC,其它读写API,擦写均衡,坏块管理,ECC校验和掉电保护都不用操心了. 2.新版RL-USB相比老版本功能强劲了 ...

  8. LeetCode 652: 寻找重复的子树 Find Duplicate Subtrees

    LeetCode 652: 寻找重复的子树 Find Duplicate Subtrees 题目: 给定一棵二叉树,返回所有重复的子树.对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可. 两 ...

  9. 汇编子程序模块化(near&far)

    1: Near 近端使用  C语言实现:  #include <stdio.h>#include <stdlib.h> void print(){ printf("p ...

  10. three.js通过canvas实现球体世界平面地图

    概况如下: 1.SphereGeometry实现自转的地球: 2.THREE.CatmullRomCurve3实现球体线条地图点确定: 3.THREE.Math.degToRad,Math.sin,M ...