ItemTemplate
您可以专门为您指定一个ListBox
:
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<!-- your template here -->
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
或者,如果您已经DataTemplate
在ResourceDictionary
某个地方定义了您的:
<DataTemplate x:Key="MyTemplate">
<!-- your template here -->
</DataTemplate>
然后您可以在ListBox
使用时引用它:
<ListBox ItemTemplate="{StaticResource MyTemplate}" />
您无需为这些方法中的任何一种编写模板选择器即可
回应评论的例子
下面的示例演示了为窗口定义DataTemplate
数据类型(在本例中String
为 )的默认值,然后在列表框中覆盖它:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type sys:String}">
<Rectangle Height="10" Width="10" Margin="3" Fill="Red" />
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<Rectangle Height="10" Width="10" Margin="3" Fill="Blue" />
</DataTemplate>
</ListBox.ItemTemplate>
<sys:String>One</sys:String>
<sys:String>Two</sys:String>
<sys:String>Three</sys:String>
</ListBox>
</Grid>
</Window>
这将产生以下 UI: