4
我有:父子数据用4层级:1个系统,2子系统,3单位,4组分
我的问题(见图):树视图显示组件,其被附加到像器Comp2的根节点。 我的目标:显示其对应“列”中的所有节点(例如Comp3)。
我试过所有的缩进,间距,填充,但没有任何工作。
我如何定制TreeNodes在TreeView中显示的顺序/位置?
任何想法?
我有:父子数据用4层级:1个系统,2子系统,3单位,4组分
我的问题(见图):树视图显示组件,其被附加到像器Comp2的根节点。 我的目标:显示其对应“列”中的所有节点(例如Comp3)。
我试过所有的缩进,间距,填充,但没有任何工作。
我如何定制TreeNodes在TreeView中显示的顺序/位置?
任何想法?
正是您想要他们可以使用一个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”并将其删除。
要为节点使用项目模板是个好主意。但它与webforms确实有点不同。你能翻译你的代码,以便它适用于webforms TreeView控件吗? ;) – gartenabfall 2013-05-14 10:14:46