WPF 数据绑定 定制一个集合的视图 数据提供程序

本文介绍了WPF中XmlDataProvider和ObjectDataProvider的使用,包括XML和.NET对象的数据绑定。讨论了不同BindingMode的特性,如OneWay、TwoWay等,并讲述了UpdateSourceTrigger属性对数据更新的影响。此外,还提到了验证规则的应用以及CompositeCollection、MultiBinding和PriorityBinding在处理不相交数据源时的作用。
摘要由CSDN通过智能技术生成

XmlDataProvider

提供了一种简单的方式绑定到一段XML,无论这段XML在内存中的片段或一个完成文件中。

<Page.Resources>
    <XmlDataProvider x:Key="xmlData" XPath="Images">
        <!-- 数据岛包含在x:XData标记中 -->
        <x:XData>
            <!-- XML 数据岛 -->
            <!-- 用空xmlns标记XML根节点,否则会被默认命名空间影响,XPath查询无法工作 -->
            <Images xmlns="">
                <Image ID="1">
                    <Name>a.jpg</Name>
                    <Image ID="3">
                        <Name>c.jpg</Name>
                    </Image>
                </Image>
                <Image ID="2">
                    <Name>b.jpg</Name>
                </Image>
            </Images>
        </x:XData>
    </XmlDataProvider>
        
    <!-- XML文件位于一个独立文件中 -->
    <XmlDataProvider x:Key="xmlData2" XPath="Images" Source="Images.xml" />
        
    <!-- 将整个XML数据绑定到一个可以理解层次结构TreeView或Menu的元素上 -->
    <!-- 绑定XML的根节点Images样式模板 -->
    <!-- 未定义显示x:Key,因为默认以DataType值做了资源键名 -->
    <!-- DataType对应XML元素名称 -->
    <HierarchicalDataTemplate DataType="Images" ItemsSource="{Binding XPath=*}">
        <TextBlock Text="All Images" Background="DeepPink"/>
    </HierarchicalDataTemplate>
    <!-- 绑定XML的子节点Image样式模板 -->
    <HierarchicalDataTemplate DataType="Image" ItemsSource="{Binding XPath=*}">
        <TextBlock FontWeight="Bold" Text="{Binding XPath=.}"/>
    </HierarchicalDataTemplate>
    <!-- 绑定XML元素Image的子节点Name样式模板 -->
    <DataTemplate DataType="Name">
        <TextBlock Foreground="CornflowerBlue" Text="{Binding XPath=.}"/>
    </DataTemplate>
</Page.Resources>
    
<StackPanel>
    <ListBox ItemsSource="{Binding Source={StaticResource xmlData2}, XPath=Image/Name}"/>
        
    <TreeView ItemsSource="{Binding Source={StaticResource xmlData},XPath=.}"/>

    <Menu ItemsSource="{Binding Source={StaticResource xmlData},XPath=.}" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值