XAML:
<pre name="code" class="html"><Window x:Class="CompositeCollection_Test01.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CompositeCollection_Test01"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<!-- GreekGod数据 -->
<local:GreekGods x:Key="GreekGodsData"/>
<!-- GreekHeroes数据 -->
<XmlDataProvider x:Key="GreekHeroesData" XPath="GreekHeroes/Hero">
<x:XData>
<GreekHeroes xmlns="">
<Hero Name="Jason" />
<Hero Name="Hercules" />
<Hero Name="Bellerophon" />
<Hero Name="Theseus" />
<Hero Name="Odysseus" />
<Hero Name="Perseus" />
<Hero Name="Arod" />
<Hero Name="Cindy" />
<Hero Name="Cendy" />
<Hero Name="Dande" />
<Hero Name="Haror" />
<Hero Name="Madtc" />
</GreekHeroes>
</x:XData>
</XmlDataProvider>
<!-- GreekGod数据模板 -->
<DataTemplate DataType="{x:Type local:GreekGod}">
<TextBlock Text="{Binding Path=Name}" Foreground="Gold"/>
</DataTemplate>
<!-- GreekHeroes数据模板 -->
<DataTemplate DataType="Hero">
<TextBlock Text="{Binding XPath=@Name}" Foreground="Cyan"/>
</DataTemplate>
</Window.Resources>
<Grid>
<StackPanel>
<TextBlock FontSize="18" FontWeight="Bold" Margin="10" HorizontalAlignment="Center">Composite Collections Sample</TextBlock>
<ListBox Name="myListBox" Height="300" Width="200" Background="White">
<ListBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={StaticResource GreekGodsData}}" />
<CollectionContainer Collection="{Binding Source={StaticResource GreekHeroesData}}" />
<ListBoxItem Foreground="Red">Other Listbox Item 1</ListBoxItem>
<ListBoxItem Foreground="Red">Other Listbox Item 2</ListBoxItem>
</CompositeCollection>
</ListBox.ItemsSource>
</ListBox>
</StackPanel>
</Grid>
</Window>
C#(后台代码):
public class GreekGods : ObservableCollection<GreekGod>
{
public GreekGods() : base()
{
Add(new GreekGod { Name = "GreekGod-1" });
Add(new GreekGod { Name = "GreekGod-2" });
Add(new GreekGod { Name = "GreekGod-3" });
Add(new GreekGod { Name = "GreekGod-4" });
Add(new GreekGod { Name = "GreekGod-5" });
Add(new GreekGod { Name = "GreekGod-6" });
Add(new GreekGod { Name = "GreekGod-7" });
Add(new GreekGod { Name = "GreekGod-8" });
Add(new GreekGod { Name = "GreekGod-9" });
Add(new GreekGod { Name = "GreekGod-10" });
}
}
public class GreekGod
{
public string Name { get; set; }
}