如何使TreeView内容为空

时间:2012-09-06 20:21:33

标签: wpf xaml treeview

我想在其中使用空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>

3 个答案:

答案 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>