2013-04-07 46 views
4

我有:父子数据用4层级:1个系统,2子系统,3单位,4组分
我的问题(见图):树视图显示组件,其被附加到像器Comp2的根节点。 我的目标:显示其对应“列”中的所有节点(例如Comp3)。
我试过所有的缩进,间距,填充,但没有任何工作。
enter image description here我如何定制TreeNodes在TreeView中显示的顺序/位置?

任何想法?

回答

2

正是您想要他们可以使用一个ItemTemplate为节点,给他们一个宽度,他们将被显示出来。

此代码是为WPF,但我想应该没有大的区别:

首先,为NodeViewModels提供一个ItemTemplate,包括HierachicalDataTemplate

<TreeView.ItemTemplate> 
    <HierarchicalDataTemplate DataType="{x:Type local:NodeViewModel}" ItemsSource="{Binding Children}"> 
     <ContentPresenter x:Name="item" ContentTemplate="{StaticResource notSelectedItemTemplate}" /> 
     <HierarchicalDataTemplate.Triggers> 
      <DataTrigger Binding="{Binding IsSelected}" Value="True"> 
       <Setter TargetName="item" Property="ContentTemplate" Value="{StaticResource selectedItemTemplate}" /> 
      </DataTrigger> 
     </HierarchicalDataTemplate.Triggers> 
    </HierarchicalDataTemplate> 
</TreeView.ItemTemplate> 

其次,提供一个DataTemplate你节点:

<DataTemplate x:Key="selectedItemTemplate" DataType="{x:Type local:NodeViewModel}"> 
    <Grid Height="Auto" TextElement.Foreground="Black"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="Auto"></RowDefinition> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="100"></ColumnDefinition> 
      <ColumnDefinition Width="50"></ColumnDefinition> 
      <ColumnDefinition Width="100"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 

     <TextBlock Grid.Column="0" Text="{Binding Id}" HorizontalAlignment="Left"></TextBlock> 
     <TextBlock Grid.Column="1" Text="----" HorizontalAlignment="Left"></TextBlock> 
     <TextBlock Grid.Column="2" Text="{Binding Name}" HorizontalAlignment="Left"></TextBlock> 
    </Grid> 
</DataTemplate> 

正如你看到的,我有两个的DataTemplates,因为我有一个不同的选择的节点。对于您不需要的情况,请忽略“notSelectedItemTemplate”并将其删除。

+0

要为节点使用项目模板是个好主意。但它与webforms确实有点不同。你能翻译你的代码,以便它适用于webforms TreeView控件吗? ;) – gartenabfall 2013-05-14 10:14:46

相关问题