zoukankan      html  css  js  c++  java
  • wpf中,xml绑定到datacontext和绑定到普通object 有何区别?

    1.XML如下:

    代码
    <Root>
    <Unions>
    <Item FURN_GRP_ID="64" FURN_GRP_NAME="ddd" />
    <Item FURN_GRP_ID="61" FURN_GRP_NAME="沿海地" />
    <Item FURN_GRP_ID="62" FURN_GRP_NAME="地中海" />
    <Item FURN_GRP_ID="63" FURN_GRP_NAME="沙滩" />
    </Unions>
    </Root>

    2. Xaml里面这样子绑定
    <XmlDataProvider x:Key="typeData" Source="Xml/Base.xml" XPath="/Root" />

    3.把指定的节点绑定到DataContext和Test
    <UC:UCUnionList Grid.Column="3" Margin="27,0,83,10" x:Name="ucUnionList"
                                     DataContext="{Binding Source={StaticResource typeData},XPath=/Root/Unions/Item}"
                                     Test="{Binding Source={StaticResource typeData},XPath=/Root/Unions/Item}"
                                     />

    4.UCUnionList的cs里面这样写:

    代码
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    [Localizability(LocalizationCategory.NeverLocalize)]
    public object Test
    {
    get { return GetValue(TestProperty);
    }
    set
    { SetValue(TestProperty, value); }
    }

    public static readonly DependencyProperty TestProperty = DependencyProperty.Register("Test",
    typeof(object), typeof(UCUnionList));


    5.在cs代码里面检测拿到的值

    var a = ucUnionList.Test;
    var b = ucUnionList.DataContext;

    发现这个情况
    a.GetType()
    {Name = "XmlElement" FullName = "System.Xml.XmlElement"}
    只拿到了一个子节点,即  <Item FURN_GRP_ID="64" FURN_GRP_NAME="ddd" />

    b.GetType()
    {Name = "XmlDataCollection" FullName = "MS.Internal.Data.XmlDataCollection"}
    拿到了所有的子节点
     <Item FURN_GRP_ID="64" FURN_GRP_NAME="ddd" />
    <Item FURN_GRP_ID="61" FURN_GRP_NAME="沿海地" />
    <Item FURN_GRP_ID="62" FURN_GRP_NAME="地中海" />
    <Item FURN_GRP_ID="63" FURN_GRP_NAME="沙滩" />

    求教各位,这是为什么呢?

  • 相关阅读:
    LNMP源码编译安装(centos7+nginx1.9+mysql5.6+php7)
    linux 最大文件查找
    Nginx 日志分享
    ZendGuardLoader安装
    移动端播放直播流(video.js 播放 m3u8 流)
    Linux下 PostgrelSQL 基本操作
    CenterOS7 安装Mysql8 及安装会遇到的问题
    Linux下 导出postgrelSql 数据库
    《编译程序设计原理与技术》笔记之自动机与正规表达式
    Linux定时检测内存,若使用率超过指标,重启Tomcat并清空内存
  • 原文地址:https://www.cnblogs.com/xiaokang088/p/1916125.html
Copyright © 2011-2022 走看看