我想在其中使用空ListBox创建TreeViewItem,其内容看起来像没有任何内容的TreeViewItem。例如,TreeViewItem“A”看起来像我希望的那样。当TreeViewItem“B”中的ListBox为空时,我希望“B”看起来像“A”。
<TreeView>
<TreeViewItem x:Name="A" Header="Header" />
<TreeViewItem x:Name="B" Header="Header with empty list">
<ListBox x:Name="localContent" ItemsSource="{Binding listContent}">
<!--ListBox.Style>
<Style TargetType="ListBox">
<Style.Triggers>
<DataTrigger Binding="{Binding listContent.Count}" Value="0">
<Setter Property="{Binding ElementName=localItem, Path=Background}">
<Setter.Value>
<Color R="0" G="0" B="0" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style-->
</ListBox>
</TreeViewItem>
</TreeView>
答案 0 :(得分:0)
您可以将列表框的Visibility
设置为Collapsed
,使其不会显示在TreeView
答案 1 :(得分:0)
看起来你已经在做与count相似的事了。
<TreeViewItem x:Name="B" Header="Header with empty list">
<ListBox x:Name="localContent" ItemsSource="{Binding listContent}">
<ListBox.Style>
<Style TargetType="ListBox">
<Style.Triggers>
<DataTrigger Binding="{Binding listContent.Count}" Value="0">
<Setter Property="Visiblity" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
</TreeViewItem>
答案 2 :(得分:0)
使用以下触发器实现了所需的行为(为任何控件添加它):
<Style.Triggers>
<DataTrigger Binding="{Binding Count, Converter={StaticResource int2bool}}" Value="False">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<Expander Visibility="Hidden" />
<TextBlock Text="list is empty" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Count, Converter={StaticResource int2bool}}" Value="True" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Expander Header="{Binding}">
<Expander.Content>
<ListBox ItemsSource="{Binding}" />
</Expander.Content>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>