WPF 多层绑定XML

Shinyar 2011-08-05 09:51:52
XML文件

<?xml version="1.0" encoding="utf-8" ?>
<a>
<b name="一" code="001">
<c cname="一.1" code="001001" />
<c cname="一.2" code="001002" />
<c cname="一.3" code="001003" />

</b>
<b name="二" code="002" />
<c cname="二.1" code="002001" />
<c cname="二.2" code="002002" />
<c cname="二.3" code="002003" />
</a>

test.xaml

<Window x:Class="Wpf1.test2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="test2" Height="300" Width="300">
<Window.Resources>
<XmlDataProvider x:Key="xmldata" Source="data/x2.xml" XPath="a/b"/>
<DataTemplate x:Key="dataTemplate2">
<Grid Width="300">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding XPath=@cname}" />
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding XPath=@code}" />
</Grid>
</DataTemplate>

<DataTemplate x:Key="dataTemplate1">
<Grid Width="300">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="15"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding XPath=@name}" />
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding XPath=@code}" />
<ListBox ItemsSource="{Binding}" ItemTemplate="{StaticResource dataTemplate2}"
Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2"/>
</Grid>
</DataTemplate>
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource xmldata}}" Width="310" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="15"/>
<RowDefinition/>
</Grid.RowDefinitions>

<!--<Label>My Soccer Leagues</Label>-->
<TextBlock Grid.Column="0" Grid.Row="0" Text="名称" />
<TextBlock Grid.Column="1" Grid.Row="0" Text="code" />

<DataGrid ItemsSource="{Binding}" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2">
<DataGrid.Columns>
<DataGridTextColumn Header="名称" HeaderTemplate="{StaticResource dataTemplate1}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>

为什么绑定只显示<b name="一" code="001">的子集, <b name="二"/>的不显示?
请高手指教
...全文
151 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shinyar 2011-08-10
  • 打赏
  • 举报
回复
<TreeView HorizontalAlignment="Stretch" Name="treeView1" VerticalAlignment="Stretch" ItemsSource="{Binding Source={StaticResource project}}" <TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding XPath=JobList}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding XPath=@Name}"/>
<TextBox Text="{Binding XPath=@Name}"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Shinyar 2011-08-10
  • 打赏
  • 举报
回复
用树编辑模板可以显示多列,但是编辑行的时候不好办。
  • 打赏
  • 举报
回复
刚研究,共同学习
  • 打赏
  • 举报
回复
试一试这样,修改xpath

<XmlDataProvider x:Key="xmldata" Source="data/x2.xml" XPath="a/b"/>
-->
<XmlDataProvider x:Key="xmldata" Source="data/x2.xml" XPath="a"/>



<TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding XPath=@name}" />
-->
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding XPath=b/@code}" />
冲冲 2011-08-05
  • 打赏
  • 举报
回复
路过,不懂

3,424

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧