I have a \[code\]xml\[/code\] file like this:\[code\]<Organizations xmlns=""> <Organization Title ="dfs" Score="70"> <Layer Title ="lar"></Layer> </Organization> <Organization Title ="srwrg" Score="70"> <Layer Title ="asdf"></Layer> <Layer Title ="lfdkj"></Layer> </Organization></Organizations>\[/code\]I use this file in my WPF project: (here is a Resource) \[code\]<XmlDataProvider x:Key="myData" Source="Data\farsDataOrganization.xml" XPath="//Organizations/Organization"/><CollectionViewSource x:Key="MyCVS" > <CollectionViewSource.Source> <Binding Source="{StaticResource myData}"/> </CollectionViewSource.Source> <CollectionViewSource.SortDescriptions> <scm:SortDescription PropertyName="@Title" Direction="Ascending"/> </CollectionViewSource.SortDescriptions> </CollectionViewSource>\[/code\]I know how to make filter based on organization's \[code\]Title\[/code\] or Layer's \[code\]Title\[/code\]:\[code\] XmlDataProvider p = (XmlDataProvider)this.FindResource("myData"); p.XPath = string.Format("//Organizations/Organization[Layer[contains(@Title,\"{0}\")]]", this.layerNameFilter.Text);\[/code\]But I want to filter these data based on both the organization's \[code\]Title\[/code\] and Layer's \[code\]Title\[/code\]. Is there any suggestion? How to change my \[code\]XPath\[/code\] string so that I get the filter based on both of them? EditI show these data on a \[code\]TreeView\[/code\]:\[code\] <TreeView Grid.Row="1" ItemsSource="{Binding Source={StaticResource MyCVS}}"> <TreeView.Resources> <HierarchicalDataTemplate DataType="Organization" ItemsSource="{Binding XPath=Layer}"> <StackPanel Orientation="Vertical" Width="340" Margin="0,0,0,5"> <Label Content="{Binding XPath=@Title}" FontSize="13" Margin="0,0,0,-5"></Label> </StackPanel> </HierarchicalDataTemplate> </TreeView.Resources></TreeView>\[/code\]