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>