WPF Treeview:跳过一个级别

时间:2015-03-21 10:52:21

标签: c# wpf xaml mvvm treeview

目前我的树视图看起来像这样。

|Department
|-Program
|--Curriculum
|---Bloc

我想跳过课程部分,让我的树视图看起来像这样。

|Department
|-Program
|--Bloc

这是我目前在xaml中的树视图。我怎么能改变这个?我需要更换模型吗?

<TreeView ItemsSource="{Binding DepartmentList}">
                    <TreeView.ItemTemplate>
                        <HierarchicalDataTemplate ItemsSource="{Binding ProgramList}">
                            <TextBlock Text="{Binding Code}" />
                            <HierarchicalDataTemplate.ItemTemplate>
                                <HierarchicalDataTemplate ItemsSource="{Binding CurriculumList}">
                                    <TextBlock Text="{Binding Title}" />
                                    <HierarchicalDataTemplate.ItemTemplate>
                                        <HierarchicalDataTemplate ItemsSource="{Binding BlocList}">
                                            <TextBlock Text="{Binding YearImplemented}"/>
                                            <HierarchicalDataTemplate.ItemTemplate>
                                                <DataTemplate>
                                                    <TextBlock Text="{Binding Code}"/>
                                                </DataTemplate>
                                            </HierarchicalDataTemplate.ItemTemplate>
                                        </HierarchicalDataTemplate>
                                    </HierarchicalDataTemplate.ItemTemplate>
                                </HierarchicalDataTemplate>
                            </HierarchicalDataTemplate.ItemTemplate>
                        </HierarchicalDataTemplate>
                    </TreeView.ItemTemplate>
                </TreeView>

1 个答案:

答案 0 :(得分:2)

您无需更改模型类。您可以使用转换器更改ItemsSource的{​​{1}}。

转换器代码:

HierarchicalDataTemplate

public class CurriculumItemsSourceConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { ObservableCollection<Curriculum> curriculumList = value as ObservableCollection<Curriculum>; return curriculumList.SelectMany(c => c.BlocList); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } 代码:

TreeView

其中<TreeView ItemsSource="{Binding DepartmentList}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding ProgramList}"> <TextBlock Text="{Binding Code}" /> <HierarchicalDataTemplate.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding CurriculumList, Converter={StaticResource curriculumItemsSourceConverter}}"> <TextBlock Text="{Binding Title}" /> <HierarchicalDataTemplate.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Code}"/> </DataTemplate> </HierarchicalDataTemplate.ItemTemplate> </HierarchicalDataTemplate> </HierarchicalDataTemplate.ItemTemplate> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> 是转换器:

curriculumItemsSourceConverter