开源WPF-Samples-netframework学习(1)Data Binding——MasterDetailXml

该案例展示了如何在WPF中使用XmlDataProvider和XPath来实现XML数据的主从绑定。通过设置数据模板和上下文,创建了一个三层结构的界面,分别显示联赛、分组和球队信息。利用IsSynchronizedWithCurrentItem同步列表选中项,实现了数据的联动展示。
摘要由CSDN通过智能技术生成

案例地址:GitHub - microsoft/WPF-Samples: Repository for WPF related samples

一、运行界面

 二、案例功能描述

实现XML数据的主-从方案

知识点:

1、XPath:使用XPath指明Binding XML路径,路径后使用@符号加字符串表示的是XML元素的Attribute,不加@的字符串表示的是子级元素。

2、  Selector.IsSynchronizedWithCurrentItem:

 

三、分析代码

1、获取XmlDataProvider

  • XmlDataProvider.Source : .xml文件路径
  • XmlDataProvider.XPath: 数据节点

         <XmlDataProvider x:Key="MyList" Source="Data\Leagues.xml"
                       XPath="Leagues/League"/>

2、设置数据模板

        <DataTemplate x:Key="DataTemplateX">
            <TextBlock Text="{Binding XPath=@name}" />
        </DataTemplate>

3、设置上下文,绑定XmlDataProvider

 <DockPanel DataContext="{Binding Source={StaticResource MyList}}">

4、设置主从关系,将下一级的上下文设置为上一级的属性

<StackPanel>
            <Label>My Soccer Leagues</Label>
            <ListBox ItemsSource="{Binding}"
                 ItemTemplate="{StaticResource DataTemplateX}"
                 IsSynchronizedWithCurrentItem="true"/>
        </StackPanel>

        <StackPanel>
            <Label Content="{Binding XPath=@name}"/>
            <ListBox Name="divisionsListBox"
                 ItemsSource="{Binding XPath=Division}"
                 ItemTemplate="{StaticResource DataTemplateX}"
                 IsSynchronizedWithCurrentItem="true"/>
        </StackPanel>
        <StackPanel>
            <Label Content="{Binding XPath=@name}" 
                   DataContext="{Binding ElementName=divisionsListBox,
                                         Path=SelectedItem}"/>
            <ListBox DataContext="{Binding ElementName=divisionsListBox,
                                       Path=SelectedItem
}"
                 ItemsSource="{Binding XPath=Team}"
                 ItemTemplate="{StaticResource DataTemplateX}"/>
        </StackPanel>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值