WPF:树视图 - 按钮有条件配售扩大子项目
问题描述:
我想建立具有以下特点一个TreeView:WPF:树视图 - 按钮有条件配售扩大子项目
- 第一级应该有不上离开,但右侧的扩展按钮
- 所有子级别应该有左侧的扩展按钮 - 就像默认的TreeViewItem
- 展开/折叠应该动画就像扩展控制
我MES使用DataTemplate和HierarchicalDataTemplate进行演唱,但扩展按钮似乎不是模板的一部分,它始终添加到模板中,并始终位于左侧。 如何根据项目级别放置扩展器按钮?
答
您必须通过更改ToggleButton列来自定义TreeViewItem ControlTemplate。然后,您可以在样式中使用DataTrigger更改控件模板。
<Style x:Key="{x:Type TreeViewItem}" TargetType="{x:Type TreeViewItem}">
<!-- snip -->
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="19" Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<ToggleButton Grid.Column="1" x:Name="Expander"
Style="{StaticResource ExpandCollapseToggleStyle}"
IsChecked="{Binding Path=IsExpanded,
RelativeSource={RelativeSource TemplatedParent}}"
ClickMode="Press"/>
<Border Name="Bd"
Grid.Column="0"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}">
<ContentPresenter x:Name="PART_Header"
ContentSource="Header"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</Border>
<ItemsPresenter x:Name="ItemsHost"
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2"/>
</Grid>
<ControlTemplate.Triggers>
<!-- snip -->
</ControlTemplate.Triggers>
</ControlTemplate>
</Style>
谢谢。多数民众赞成我是如何尝试它。但问题是,子项目(进入ItemsPresenter的),然后确实也有右侧的扩展按钮... – user1130329 2013-02-15 07:51:19
只需在绑定到对象的level属性的datatrigger中设置模板 – mathieu 2013-02-15 07:52:38
您的意思是我应该在数据触发器内切换CONTROLtemplate? – user1130329 2013-02-15 08:05:06