wpf - 无法显示TreeView项目

时间:2011-08-04 12:43:06

标签: c# wpf treeview treeviewitem

我有以下代码,它应该显示一个TreeView(原始代码更复杂,因此复杂的控制雇佣程序):

<TreeView ItemsSource="{Binding TreeRoot}"
      HorizontalAlignment="Left">


    <TreeView.Resources>

        <DataTemplate x:Key="CTemplate">
            <Border >

                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="auto"/>
                    </Grid.ColumnDefinitions>

                    <ToggleButton 
                            Grid.Column="1"
            x:Name="Expander"
                            HorizontalAlignment="Right"
                            ClickMode="Press"/>                                          


                    <TextBlock  Text="{Binding Name}" 
                Grid.Column="0" />
                </Grid>

            </Border>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Path=HasItems, RelativeSource={RelativeSource AncestorType={x:Type TreeViewItem}}}" Value="False">
                    <Setter TargetName="Expander" Property="Visibility" Value="Hidden"/>
                </DataTrigger>
            </DataTemplate.Triggers>

        </DataTemplate>



        <Style TargetType="{x:Type TreeViewItem}" x:Key="aaa">
            <Setter Property="ItemsSource" Value="{Binding Children}"/>
    <Setter Property="IsExpanded" Value="{Binding Path=IsExpanded,Mode=TwoWay}"/>                


            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TreeViewItem}">
                        <StackPanel>
                            <Border Name="Bd"
                                        Background="{TemplateBinding Background}">

                            </Border>
                            <ItemsPresenter x:Name="ItemsP" />
                        </StackPanel>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsExpanded" Value="false">
                                <Setter TargetName="ItemsP"
                                        Property="Visibility"
                                        Value="Collapsed"/>
                            </Trigger>

                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>

        </Style>

        <Style TargetType="{x:Type TreeView}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TreeView}">
                        <Border BorderBrush="{TemplateBinding BorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}">
                             <DockPanel>
                                    <ItemsPresenter/>
                                </DockPanel>

                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="ItemContainerStyle" Value="{StaticResource aaa}" />
            <Setter Property="ItemTemplate" Value="{CTemplate}" />
        </Style>
    </TreeView.Resources>
</TreeView>

你能帮我弄清楚为什么我的物品没有显示出来吗? (页面显示为空)

谢谢, 李

1 个答案:

答案 0 :(得分:1)

您没有显示TreeViewItem标头的任何内容:

<Style TargetType="{x:Type TreeViewItem}" x:Key="aaa">
    ...
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TreeViewItem}">
                <StackPanel>
                    <Border Name="Bd" Background="{TemplateBinding Background}">
                        <ContentPresenter x:Name="PART_Header"
                                          ContentSource="Header"
                                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                    </Border>
                    <ItemsPresenter x:Name="ItemsP" />
                </StackPanel>
                ...
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

上面我添加了ContentPresenter。