6. Data template Data templates provide a great deal of flexibility for presenting data, and we continue to look at its capabilities in the previous example.
<window x:class= "Learn.WPF.Window1"
Xmlns= "Http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x= "Http://schemas.microsoft.com/winfx/2006/xaml"
Xmlns:my= "CLR-NAMESPACE:LEARN.WPF"
title= "Window1" >
<Window.Resources>
<my:personallist x:key= "Personals" >
<my:personal name= "Tom" age= "ten" sex= "Male"/>
<my:personal name= "Mary" age= "sex=" Female "/>"
<my:personal name= "Jack" age= "sex=" Male "/>"
</my:PersonalList>
</Window.Resources>
<Grid>
<stackpanel datacontext= "{StaticResource personals}" >
<listbox x:name= "ListBox1" Itemssource= "{Binding}" >
<ListBox.ItemTemplate>
<DataTemplate>
<stackpanel orientation= "Horizontal" >
<textblock text= "{Binding path=name}"/>
<textblock>, </TextBlock>
<textblock text= "{Binding path=age}"/>
<TextBlock>,</TextBlock>
<textblock text= "{Binding path=sex}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Grid>
</Window>
Obviously, using ListBox.ItemTemplate.DataTemplate, we can display data source objects in more complex and richer ways, instead of just displaying a single property through Path. But normally, we would define a data template in a resource, like HTML/CSS, for reuse in multiple places.
<window x:class= "Learn.WPF.Window1"
Xmlns= "Http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x= "Http://schemas.microsoft.com/winfx/2006/xaml"
Xmlns:my= "CLR-NAMESPACE:LEARN.WPF"
title= "Window1" >
<Window.Resources>
<my:personallist x:key= "Personals" >
<my:personal name= "Tom" age= "ten" sex= "Male"/>
<my:personal name= "Mary" age= "sex=" Female "/>"
<my:personal name= "Jack" age= "sex=" Male "/>"
</my:PersonalList>
<datatemplate x:key= "MyData" >
<stackpanel orientation= "Horizontal" >
<textblock text= "{Binding path=name}"/>
<TextBlock>,</TextBlock>
<textblock text= "{Binding path=age}"/>
<TextBlock>,</TextBlock>
<textblock text= "{Binding path=sex}"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<stackpanel datacontext= "{StaticResource personals}" >
<listbox x:name= "ListBox1" Itemssource= "{Binding}"
Itemtemplate= "{StaticResource MyData}" >
</ListBox>
</StackPanel>
</Grid>
</Window>