我有一个包含WPF应用程序所需的多层次数据的xml文件。我的目标是首先使用组合框过滤数据,最后在代码中选择AttributeUp和AttributeDown标记内的数据。
<?xml version = "1.0" encoding="utf-8"?>
<MenuItems xmlns="">
<Menu Name="menu1">
<SubMenu Name = "submenu1">
<ItemsList>
<Item Name = "item1">
<AttributeUp>DataUp</AttributeUp>
<AttributeDown>DataDown</AttributeDown>
</Item>
</SubMenu>
</Menu>
</MenuItems>
<Window.Resources>
<XmlDataProvider x:Key="updownItems" Source="./updownItemsList.xml" XPath="MenuItems/Menu" IsInitialLoadEnabled="True" IsAsynchronous="False"/>
</Window.Resources>
下面是我如何过滤数据的
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Label Content="Level1" Width="35" Margin="0,0,0,0"></Label>
<ComboBox x:Name="cmbBoxToplevel" IsEditable="True" SelectedIndex="0" Width="110"
Margin="0,0,0,0" HorizontalAlignment="Right"
ItemsSource="{Binding Source={StaticResource updownItems}}"
DisplayMemberPath="@Name" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="Level2" Margin="0,0,0,0"></Label>
<ComboBox x:Name="cmbBoxSecondLevel" IsEditable="True" Width="110" SelectedIndex="0"
Margin="0,0,0,0" HorizontalAlignment="Right"
DataContext="{Binding Path=SelectedItem, ElementName=cmbBoxToplevel}"
ItemsSource="{Binding XPath=./Menu}" DisplayMemberPath="@Name" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="Level3" Margin="0,10,0,0"></Label>
<ComboBox x:Name="cmbBoxJanya" IsEditable="True" Width="110" SelectedIndex="0"
Margin="0,10,0,0" HorizontalAlignment="Right" DataContext="{Binding Path=SelectedItem,
ElementName=cmbBoxSecondLevel}" ItemsSource="{Binding XPath=./ItemsList/Item}"
DisplayMemberPath="@Name" />
</StackPanel>
</StackPanel>
通过这些,我能够将xml标记名过滤到不同的组合框中。我需要实现的是访问
属性
和
直接进入C#代码隐藏(主窗口)。我不想使用任何WPF元素来存储这些参数。
不需要为xml解析编写单独的代码就可以了
.