1

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

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 中,它会绑定但不显示值。

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

4

0 回答 0