1

我试图通过 IValueConverter 使隐式生成的 TreeViewItems 折叠。我的代码删除了网格,但网格位于 TreeViewItem 中。如何使用 IValueConverter 使 TreeViewItem 折叠?

  <TreeView   Name="TreeViewNew"
                                    Background="Transparent" 
                                    HorizontalContentAlignment="Stretch"  
                                    VirtualizingStackPanel.IsVirtualizing="True"
                                    ScrollViewer.VerticalScrollBarVisibility="Disabled"
                                    >
<TreeView.ItemTemplate>
 <HierarchicalDataTemplate ItemsSource="{Binding Path=MapLayers}">
                                    <Grid>
                                        <TextBlock 
                                            Focusable="False" 
                                            Width="150" 
                                            Text="{Binding Path=Name}" 
                                            FontSize="10"
                                            TextWrapping="Wrap" 
                                            Background="Transparent"
                                            HorizontalAlignment="Center"
                                            />
                                    </Grid>

                                    <HierarchicalDataTemplate.ItemTemplate>
                                        <DataTemplate >
                                             <Grid Visibility="{Binding Path=Layer, Converter={StaticResource cIsDrawingLayer}}">
4

2 回答 2

1

您可以尝试设置要控制 TreeViewItem 在 TreeView 的 ItemContainerStyle 中的可见性的绑定。可能您必须在 HierarchicalDataTemplate 中为每个级别的 TreeViewItems 重复该设置。如果 Binding 不起作用,您仍然可以在 ItemContainerStyle 中尝试 Trigger 或 DataTrigger。可能您甚至不需要带触发器的转换器。

于 2012-12-04T17:59:29.687 回答
0

这是完成任务的代码:

    <TreeView.Resources>   
    <Style TargetType="TreeViewItem" > 
<Setter      Property="Visibility" Value="{Binding Path=Layer,
    Converter={StaticResource cIsDrawingLayer}}" />  
</Style>
    </TreeView.Resources>
于 2012-12-04T19:56:33.077 回答