I have been reading about filtering, XML, CollectionViewSource for days now and I am just as confused as when I started.
I have created a very simple little project in Blend 4…
XML:
<?xml version="1.0" encoding="UTF-8"?>
<dataroot
xmlns:od="urn:schemas-microsoft-com:officedata"
generated="2011-06-04T14:21:45">
<Product>
<ID>101</ID>
<Name>Old
Book</Name>
<Price>10</Price>
</Product>
<Product>
<ID>105</ID>
<Name>New
Book</Name>
<Price>20</Price>
</Product>
<Product>
<ID>110</ID>
<Name>Video
Tape</Name>
<Price>25</Price>
</Product>
<Product>
<ID>112</ID>
<Name>Video
Game</Name>
<Price>30</Price>
</Product>
<Product>
<ID>130</ID>
<Name>Candy
Bar</Name>
<Price>5</Price>
</Product>
</dataroot>
XAML:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="WpfApplication3.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="300"
Height="257">
<Window.Resources>
<XmlDataProvider
x:Key="ProductData" Source="\Product.xml" XPath="dataroot"
d:IsDataSource="True"/>
<DataTemplate
x:Key="DataTemplate1">
<StackPanel
Orientation="Horizontal"
Width="592.56">
<TextBlock Text="{Binding
XPath=ID}" Margin="20,0,0,0"/>
<TextBlock
Text="{Binding XPath=Name}"
Margin="20,0,0,0"/>
<TextBlock Text="{Binding
XPath=Price}"
Margin="20,0,0,0"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid x:Name="LayoutRoot" DataContext="{Binding
Source={StaticResource ProductData}}" >
<ListBox
x:Name="myList" ItemTemplate="{DynamicResource DataTemplate1}"
ItemsSource="{Binding XPath=/dataroot/Product}" Margin="8,8,0,0" Height="86"
VerticalAlignment="Top" HorizontalAlignment="Left"
Width="267"/>
<Grid x:Name="SelectedItemGrid"
DataContext="{Binding SelectedItem, ElementName=myList}" Margin="20,98,20,62"
d:DataContext="{Binding Source={StaticResource ProductData},
XPath=/dataroot/Product}">
<TextBlock
HorizontalAlignment="Left" VerticalAlignment="Top" Width="100"
Text="ID"/>
<TextBlock Text="{Binding XPath=ID}"
HorizontalAlignment="Left" VerticalAlignment="Top" Width="150"
Margin="104,0,0,0"/>
<TextBlock
HorizontalAlignment="Left" VerticalAlignment="Top" Width="100"
Margin="0,19.96,0,0" Text="Name"/>
<TextBlock
Text="{Binding XPath=Name}" HorizontalAlignment="Left" VerticalAlignment="Top"
Width="150" Margin="104,19.96,0,0"/>
<TextBlock
HorizontalAlignment="Left" VerticalAlignment="Top" Width="100"
Margin="0,39.92,0,0" Text="Price"/>
<TextBlock
Text="{Binding XPath=Price}" HorizontalAlignment="Left" VerticalAlignment="Top"
Width="150"
Margin="104,39.92,0,0"/>
</Grid>
<Label
x:Name="filterLabel" Content="Filter ProductId:" HorizontalAlignment="Left"
VerticalAlignment="Bottom" Margin="8,0,0,23.04"/>
<TextBox
x:Name="myFilterBox"
TextWrapping="Wrap" VerticalAlignment="Top"
Margin="105.727,174,9,0"
d:LayoutOverrides="HorizontalAlignment"/>
</Grid>
</Window>
I tried to follow the Zune XML tutorial posted here, but it was a much older version of Blend and it succeeded in getting me even more confused.
Is there a simple way from within the Blend UI that I can filter my xml generated list using what is typed into the text box?
Any help fot this dumb ditz would be greatly appreciated.
~Christine