这是我使用的代码:
类 CurrentDriveDataTemplateSelector : DataTemplateSelector { public DataTemplate currentDriveTemplate {get; 设置;} 公共数据模板 dirTemplate { 获取;放; }
public override DataTemplate SelectTemplate(object item,
DependencyObject container)
{
FrameworkElement element = container as FrameworkElement;
if (element != null)
{
Directory dir = item as Directory;
if (dir != null)
{
bool isCurrentDrive = ((dir.parent == 0) && (dir.state == "current"));
if (isCurrentDrive)
{
return currentDriveTemplate;
}
return dirTemplate;
}
}
}
}
<HierarchicalDataTemplate x:Key="normalDirTemplate" ItemsSource="{Binding Path=childdirs}">
<TextBlock Text="{Binding Path=name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="currentDriveTemplate" ItemsSource="{Binding Path=childdirs}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=name}" Width="100"/>
<Button Content="=>" Width="20"></Button>
</StackPanel>
</HierarchicalDataTemplate>
<mine:CurrentDriveDataTemplateSelector
currentDriveTemplate="{StaticResource currentDriveTemplate}"
dirTemplate="{StaticResource normalDirTemplate}"
x:Key="CurrentDriveDataTemplateSelector"/>
...blah
<TreeView Height="324" Margin="0,25,0,0" x:FieldModifier="private" x:Name="currentDirectoryTree" Width="150" ItemTemplateSelector="{StaticResource CurrentDriveDataTemplateSelector}">
...etc