Jos*_*lin 8 wpf treeview xaml hierarchicaldatatemplate
我有一个TreeView,我正在尝试实现一种样式,允许我使用HierarchicalDataTemplate.在特定节点的所有子节点周围放置边框.我想要的一个例子如下所示:

以下代码是我到目前为止的代码.
<HierarchicalDataTemplate DataType="{x:Type model:Node}" ItemsSource="{Binding Children, Mode=OneWay}">
<StackPanel>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
//what goes in here???
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)
我需要添加什么来实现我想要的边框?
Viv*_*Viv 12
为了渲染一个Border子集合,TreeViewItem我们需要修改Stylefor ItemContainerStyle的TreeView
TreeViewItem Style默认情况下使用a <ItemsPresenter x:Name="ItemsHost" />来呈现它的子项内容.
默认情况下儿童的内容ItemContainerStyle由.给出
<ItemsPresenter x:Name="ItemsHost"
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2" />
Run Code Online (Sandbox Code Playgroud)
现在为了测试这个我有一个名为bool的Collection,Type只是试图Border在这个bool为True时呈现一个
所以,我更新了ItemsPresenter对
<Border Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2"
BorderThickness="1">
<Border.Style>
<Style TargetType="{x:Type Border}">
<Setter Property="BorderBrush"
Value="Transparent" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type TreeViewItem}},
Path=DataContext.Type}"
Value="True">
<Setter Property="BorderBrush"
Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<ItemsPresenter x:Name="ItemsHost" />
</Border>
Run Code Online (Sandbox Code Playgroud)
然后呈现以下内容

您当然必须根据您自己想要Border渲染的情况更新上面的Bindings .
在我的情况下Type,对于具有"1.1"的项目,我的变量被设置为True,因为它是标题内容.
| 归档时间: |
|
| 查看次数: |
3156 次 |
| 最近记录: |