数据模板中的TreeView

时间:2012-10-17 14:38:30

标签: wpf treeview datatemplate

我有一个看起来像的对象:

List =
Parent+Child,
Parent+Child
Parent+Child
Parent+List<Child>
Parent+Child

在我开始工作的过程中,父母+孩子已被夷为平地以帮助绑定。

我正在尝试将它们写入模板化列表框,如果有1个子项则使用不同的模板,如果有1个以上的子项则使用另一个模板。我有这个工作,但我想将多个孩子绑定到TreeView,所以你可以扩展父和看到所有的孩子,但我很难让它绑定。

这是我的代码(按逻辑顺序):

   <ListBox x:Name="lsbGrandParent" ItemTemplateSelector="{StaticResource dataTemplateSelector}" />

    <localutilities:dataTemplateSelector
        OneChildTemplate="{StaticResource dtOneChildSelected}"
        MultipleChildrenTemplate="{StaticResource dtMultipleChildrenSelected}"
        x:Key="dataTemplateSelector"/>

   public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        int childCount = Convert.ToInt32(item).Count;
        if (childCount <= 1)
            return OneChildTemplate;
        else
            return MultipleChildrenTemplate;
    }

    <DataTemplate x:Name="dtMultipleChildrenSelected" x:Key="dtMultipleChildrenSelected">
        <Grid HorizontalAlignment="Left" VerticalAlignment="Center">
            <StackPanel Orientation="Vertical" >
                <TreeView HorizontalAlignment="Left" ItemTemplate="{StaticResource menuMultipleChildren}" Width="220" Height="100" Margin="0,0,0,0" MaxHeight="220" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" />
            </StackPanel>
        </Grid>
    </DataTemplate>


    <HierarchicalDataTemplate x:Key="menuMultipleChildren" ItemsSource="{Binding Path=MultipleChildren}" ItemTemplate="{StaticResource menuChildren}">
        <StackPanel Orientation="Horizontal">
            <Label Content="{Binding Path=ParentId}" Width="20" Height="Auto" />
            <Label Content="{Binding Path=ParentName}" Width="140" Height="Auto" />
    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate x:Key="menuChildren">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Bottom" >
            <Label Content="{Binding Path=ChildName}" Width="140" Height="Auto" />
        </StackPanel>
    </HierarchicalDataTemplate>

但是当它运行时,只有一个树视图应该存在的空间,并且当ParentName绑定并且它没有绑定时我已经中断了。如果我将模板代码直接放在TreeViewItem中,它会绑定但不显示值。

我做了一些明显错误的事情,还是有更好的方法来实现我想要实现的目标?

0 个答案:

没有答案