WPF 第三级横向排列效果,左侧使用WrapPanel,右侧使用StackPanel,效果见下图:

代码如下:

Mainwindow的xaml如下:

<Window x:Class="WPFDemos.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPFDemos"mc:Ignorable="d"x:Name="widnow"WindowStartupLocation="CenterScreen"UseLayoutRounding="True"Background="LightBlue"FontSize="16"Title="title" Height="500" Width="1000"><Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><TreeView Grid.Column="0" Margin="5" Width="300" ItemsSource="{Binding Items,ElementName=widnow}"><TreeView.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Children}"><HierarchicalDataTemplate.ItemContainerStyle><Style TargetType="TreeViewItem"><Setter Property="ItemsPanel"><Setter.Value><ItemsPanelTemplate><WrapPanel Width="300"/></ItemsPanelTemplate></Setter.Value></Setter>
</Style></HierarchicalDataTemplate.ItemContainerStyle><TextBlock Text="{Binding DisplayText}"/><HierarchicalDataTemplate.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Children}"><TextBlock Text="{Binding DisplayText}"/></HierarchicalDataTemplate></HierarchicalDataTemplate.ItemTemplate></HierarchicalDataTemplate></TreeView.ItemTemplate></TreeView><TreeView Grid.Column="1" Margin="5" Width="300" ItemsSource="{Binding Items,ElementName=widnow}"><TreeView.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Children}"><HierarchicalDataTemplate.ItemContainerStyle><Style TargetType="TreeViewItem"><Setter Property="ItemsPanel"><Setter.Value><ItemsPanelTemplate><StackPanel Orientation="Horizontal"/></ItemsPanelTemplate></Setter.Value></Setter>
</Style></HierarchicalDataTemplate.ItemContainerStyle><TextBlock Text="{Binding DisplayText}"/><HierarchicalDataTemplate.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Children}"><TextBlock Text="{Binding DisplayText}"/></HierarchicalDataTemplate></HierarchicalDataTemplate.ItemTemplate></HierarchicalDataTemplate></TreeView.ItemTemplate></TreeView></Grid>
</Window>

MainWindow的后台代码如下:

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;
namespace WPFDemos
{public partial class MainWindow : Window, INotifyPropertyChanged{private ObservableCollection<ItemViewModel> _items = new ObservableCollection<ItemViewModel>();public ObservableCollection<ItemViewModel> Items{get { return _items; }set{_items = value;OnPropertyChanged(nameof(Items));}}public MainWindow(){InitializeComponent();Items = new ObservableCollection<ItemViewModel>(){new ItemViewModel{DisplayText="中国人",Children=new ObservableCollection<ItemViewModel>{new ItemViewModel{DisplayText="马云"},new ItemViewModel{DisplayText="马化腾",Children=new ObservableCollection<ItemViewModel>(){new ItemViewModel{ DisplayText="身价:100亿"},new ItemViewModel{ DisplayText="老婆数:100个"},new ItemViewModel{ DisplayText="老婆数:100个"},new ItemViewModel{ DisplayText="老婆数:100个"},new ItemViewModel{ DisplayText="老婆数:100个"},}},new ItemViewModel{DisplayText="WPF UI作者",Children=new ObservableCollection<ItemViewModel>(){new ItemViewModel{ DisplayText="身价:100亿"},new ItemViewModel{ DisplayText="老婆数:100个"},new ItemViewModel{ DisplayText="老婆数:100个"},new ItemViewModel{ DisplayText="老婆数:100个"},new ItemViewModel{ DisplayText="老婆数:100个"},}},}},new ItemViewModel{DisplayText="中国人",Children=new ObservableCollection<ItemViewModel>{new ItemViewModel{DisplayText="马云"},new ItemViewModel{DisplayText="马化腾"},new ItemViewModel{DisplayText="WPF UI作者"},}},new ItemViewModel{DisplayText="歪果人",Children=new ObservableCollection<ItemViewModel>{new ItemViewModel{DisplayText="乔布斯"},new ItemViewModel{DisplayText="巴菲特"},}},};}public event PropertyChangedEventHandler PropertyChanged;public void OnPropertyChanged(string name){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));}}public class ItemViewModel : INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged;public void OnPropertyChanged(string name){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));}public string DisplayText { get; set; }public ObservableCollection<ItemViewModel> Children { get; set; } = new ObservableCollection<ItemViewModel>();}public class TreeItemMarginConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){var left = 0.0;UIElement element = value as TreeViewItem;while (element != null && element.GetType() != typeof(TreeView)){element = (UIElement)VisualTreeHelper.GetParent(element);if (element is TreeViewItem)left += 18.0;}return new Thickness(left, 0, 0, 0);}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotImplementedException();}}
}

WPF Treeview第三层横向排列相关推荐

  1. Template、ItemsPanel、ItemContainerStyle、ItemTemplate(包括ListBox的Item子项是横向排列)...

    Template.ItemsPanel.ItemContainerStyle.ItemTemplate 分类: WPF2011-10-12 10:13 4716人阅读 评论(0) 收藏 举报 data ...

  2. WPF TreeView HierarchicalDataTemplate

    原文 WPF TreeView HierarchicalDataTemplate   <StackPanel Margin="0,0,0,0"><StackPan ...

  3. css样式中关于li的横向排列

    在css样式中关于li的横向排列的方法大致有两种: 第一种 :直接在<li>里面设置样式 <ul style="list-style:none;"> < ...

  4. html横向排列flex,flex布局示例

    作者:水牛01248 几个横排元素在竖直方向上新直能分支调二浏页器朋代说,居中 display: flex; flex-direction: row;//横向排列 align-items: cente ...

  5. EXT 中form的列横向排列

    EXT的formpanel中的横向排列布局 利用formpanel的form和column属性混合使用来实现横线布局,效果图如下: var hform = new Ext.form.FormPanel ...

  6. 横向排列两个多个div盒子的方法(CSS浮动清除float-clear/inline)/办法

    最近在做一个div css切割,昨晚发现了长期以来一直无记录下来的问题!关于兼容IE跟FF的float属性.趁现在还清醒赶紧记下笔记先: 一.并排在一行的两个div样式有这种情况:ie或者ff下对于子 ...

  7. mysql 横向排列,mysql横向转纵向、纵向转横向排列的方法

    初始化数据 DROP TABLE IF EXISTS `test_01`; CREATE TABLE `test_01` ( `id` int(0) NOT NULL, `user` varchar( ...

  8. 实现让两个DIV横向排列方法揭秘

    你对如何定义让两个DIV横向排列的方法是否熟悉,这里和大家分享一下,主要有两种方法,一种是把display换成inline,另一种就是使用float:right属性,相信本文介绍一定会让你有所收获的. ...

  9. WPF TreeView 绑定(demo 转)

    WPF TreeView 绑定 2018年01月23日 13:55:32 余生余我 阅读数:563 前台: <TreeView x:Name="tree" ItemsSour ...

最新文章

  1. 内存回收的一些基本方法
  2. Ubuntu 16.04下Caffe-SSD的应用(三)——训练VOC2007数据生成模型
  3. 第六篇:python基础之文件处理
  4. Java Base64 编码解码方案总结
  5. HTTP Cookie
  6. 【计算机网络复习】1.2.2 OSI参考模型
  7. [C++]虚函数-同名访问
  8. java put请求_计算机毕业设计中用java实现小程序推送(springboot实现)
  9. 如何把图纸转换为t3格式_CAD图纸快速转换天正T3格式_鹏业CAD云服务
  10. C#正则表达式用法总结
  11. H12-211数通HCNA题库解析(二)
  12. Linux下使用服务器24小时不间断直播电影电视剧
  13. 2020年度美国最受市场欢迎的十大编程语言
  14. windows7无声音,提示未插入扬声器或耳机的解决
  15. 国外计算机核心期刊易读,国内英语写作研究现状的文献综述——对十大外语类核心期刊近五年(2012-2016)的统计分析...
  16. python爬虫———多线程threading模块爬取抖音用户信息
  17. linux命令 dmesg_如何在Linux上使用dmesg命令
  18. 苏嵌//张朋//2018.07.23
  19. uni-app省市区地址选择器
  20. Beaver's Calculator(蓝桥杯 算法训练)sort排序

热门文章

  1. 有研究irrlicht引擎的吗,交流交流
  2. 硬盘结构及硬盘错误的解决方法(一)
  3. python删除两个excel表中的相同元素_python筛选出两个文件中重复行的方法
  4. 黑马C++设计模式1
  5. 斯坦福大学Andrew Ng - 机器学习笔记(8) -- 推荐系统 大规模机器学习 图片文字识别...
  6. C#网络编程(订立协议和发送文件) - Part.4
  7. BFS HDOJ 2102 A计划
  8. hdu 4493 Tutor (水 精度)
  9. Sharepoint在itemUpdating中获取修改后的用户或用户组栏的值
  10. 博客园2013年5月份第1周源码发布详情