Wpf 在databound ObservableCollection中隐藏空元素

Wpf 在databound ObservableCollection中隐藏空元素,wpf,data-binding,observablecollection,Wpf,Data Binding,Observablecollection,我有多个observateCollections,它们使用hierarchycalDataTemplate绑定到TreeView,类似于中的实现 我的问题是,集合中的一个(或多个)元素有时可能为null,但它们仍以空行形式显示在TreeView中,例如在本例中: 除了从集合中删除这些元素外,是否有一种方法隐藏这些元素,以便它们在更改为非空值之前不会出现在用户界面中 如果XAML的结构是相关的,那么这大致就是我正在做的: <TreeView.Resources> <Hier

我有多个
observateCollection
s,它们使用
hierarchycalDataTemplate
绑定到
TreeView
,类似于中的实现

我的问题是,集合中的一个(或多个)元素有时可能为null,但它们仍以空行形式显示在TreeView中,例如在本例中:

除了从集合中删除这些元素外,是否有一种方法隐藏这些元素,以便它们在更改为非空值之前不会出现在用户界面中

如果XAML的结构是相关的,那么这大致就是我正在做的:

<TreeView.Resources>
  <HierarchicalDataTemplate DataType="{x:Type local:FolderNode}" 
                            ItemsSource="{Binding Items}">
    <TextBlock Text="{Binding Path=DisplayName}" />
  </HierarchicalDataTemplate>

  <HierarchicalDataTemplate DataType="{x:Type local:ParentItem}">
    <HierarchicalDataTemplate.ItemsSource>
      <MultiBinding>
        <MultiBinding.Converter>
          <local:MultiCollectionConverter />
        </MultiBinding.Converter>
        <Binding Path="Children1" />
        <Binding Path="Children2" />
      </MultiBinding>
    </HierarchicalDataTemplate.ItemsSource>
    <TextBlock Text="{Binding Path=DisplayName}" />
  </HierarchicalDataTemplate>

  <HierarchicalDataTemplate DataType="{x:Type local:ChildItemWithChildCollection}" 
                            ItemsSource="{Binding}">
    <TextBlock Text="{Binding Path=DisplayName}" />
  </HierarchicalDataTemplate>

  <HierarchicalDataTemplate DataType="{x:Type local:ChildItemWithChild}" 
                            ItemsSource="{Binding Path=GrandChildren}">
    <TextBlock Text="{Binding Path=DisplayName}" FontWeight="Bold" />
  </HierarchicalDataTemplate>

  <DataTemplate DataType="{x:Type local:GrandChildItem}">
    <TextBlock x:Name="Item" Text="{Binding Path=DisplayName}" />
  </DataTemplate>

  <DataTemplate DataType="{x:Type local:ChildItemWithoutChildCollection}">
    <TextBlock Text="{Binding Path=DisplayName}" />
  </DataTemplate>

</TreeView.Resources>

如果整个集合项为空,则当
DataContext
为空时,可以折叠
treevieItem

<TreeView>
    <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding}" Value="{x:Null}">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>