public class MyTemplateSelector : DataTemplateSelector
{
public DataTemplate importantTaskTemplate { get; set; }
public DataTemplate myTaskTemplate { get; set; }
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
FrameworkElement element = container as FrameworkElement;
if (element != null && item != null && item is TEST)
{
TEST taskitem = item as TEST;
if (taskitem.Title == "Title")
return importantTaskTemplate;
else
return myTaskTemplate;
}
return null;
}
}
需要自定义一个继承自DataTemplateSelector的类
public class TEST
{
public string Title { get; set; }
public string Subtitle { get; set; }
}
一个可提供判断条件的类
<Page.Resources>
<CollectionViewSource x:Name="cv1"></CollectionViewSource>
<!-- TODO: Delete this line if the key AppName is declared in App.xaml -->
<x:String x:Key="AppName">My Application</x:String>
<DataTemplate x:Name="importantTaskTemplate">
<Border x:Name="border" BorderBrush="Red" BorderThickness="1"
Padding="5" Margin="5">
<StackPanel HorizontalAlignment="Center">
<TextBlock Text="{Binding Title}" />
<TextBlock>
<Run Text="!"/>
</TextBlock>
</StackPanel>
</Border>
</DataTemplate>
<DataTemplate x:Name="myTaskTemplate">
<Border x:Name="border" BorderBrush="Aqua" BorderThickness="1"
Padding="5" Margin="5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Task Name:"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Title}" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Description:"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Title}"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Priority:"/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Title}"/>
</Grid>
</Border>
</DataTemplate>
<local:MyTemplateSelector x:Key="myDataTemplateSelector" importantTaskTemplate="{StaticResource importantTaskTemplate}" myTaskTemplate="{StaticResource myTaskTemplate}"/>
</Page.Resources>
XAML文件中的自定义模板与自定义类的模板绑定
<GridView x:Name="gridview" HorizontalAlignment="Left" VerticalAlignment="Top" Width="633" ItemTemplateSelector="{StaticResource myDataTemplateSelector}" Margin="10,10,0,0" Grid.Row="1" Height="498"/>
控件对模板的绑定