WPF Treeview第三层横向排列
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第三层横向排列相关推荐
- Template、ItemsPanel、ItemContainerStyle、ItemTemplate(包括ListBox的Item子项是横向排列)...
Template.ItemsPanel.ItemContainerStyle.ItemTemplate 分类: WPF2011-10-12 10:13 4716人阅读 评论(0) 收藏 举报 data ...
- WPF TreeView HierarchicalDataTemplate
原文 WPF TreeView HierarchicalDataTemplate <StackPanel Margin="0,0,0,0"><StackPan ...
- css样式中关于li的横向排列
在css样式中关于li的横向排列的方法大致有两种: 第一种 :直接在<li>里面设置样式 <ul style="list-style:none;"> < ...
- html横向排列flex,flex布局示例
作者:水牛01248 几个横排元素在竖直方向上新直能分支调二浏页器朋代说,居中 display: flex; flex-direction: row;//横向排列 align-items: cente ...
- EXT 中form的列横向排列
EXT的formpanel中的横向排列布局 利用formpanel的form和column属性混合使用来实现横线布局,效果图如下: var hform = new Ext.form.FormPanel ...
- 横向排列两个多个div盒子的方法(CSS浮动清除float-clear/inline)/办法
最近在做一个div css切割,昨晚发现了长期以来一直无记录下来的问题!关于兼容IE跟FF的float属性.趁现在还清醒赶紧记下笔记先: 一.并排在一行的两个div样式有这种情况:ie或者ff下对于子 ...
- mysql 横向排列,mysql横向转纵向、纵向转横向排列的方法
初始化数据 DROP TABLE IF EXISTS `test_01`; CREATE TABLE `test_01` ( `id` int(0) NOT NULL, `user` varchar( ...
- 实现让两个DIV横向排列方法揭秘
你对如何定义让两个DIV横向排列的方法是否熟悉,这里和大家分享一下,主要有两种方法,一种是把display换成inline,另一种就是使用float:right属性,相信本文介绍一定会让你有所收获的. ...
- WPF TreeView 绑定(demo 转)
WPF TreeView 绑定 2018年01月23日 13:55:32 余生余我 阅读数:563 前台: <TreeView x:Name="tree" ItemsSour ...
最新文章
- 内存回收的一些基本方法
- Ubuntu 16.04下Caffe-SSD的应用(三)——训练VOC2007数据生成模型
- 第六篇:python基础之文件处理
- Java Base64 编码解码方案总结
- HTTP Cookie
- 【计算机网络复习】1.2.2 OSI参考模型
- [C++]虚函数-同名访问
- java put请求_计算机毕业设计中用java实现小程序推送(springboot实现)
- 如何把图纸转换为t3格式_CAD图纸快速转换天正T3格式_鹏业CAD云服务
- C#正则表达式用法总结
- H12-211数通HCNA题库解析(二)
- Linux下使用服务器24小时不间断直播电影电视剧
- 2020年度美国最受市场欢迎的十大编程语言
- windows7无声音,提示未插入扬声器或耳机的解决
- 国外计算机核心期刊易读,国内英语写作研究现状的文献综述——对十大外语类核心期刊近五年(2012-2016)的统计分析...
- python爬虫———多线程threading模块爬取抖音用户信息
- linux命令 dmesg_如何在Linux上使用dmesg命令
- 苏嵌//张朋//2018.07.23
- uni-app省市区地址选择器
- Beaver's Calculator(蓝桥杯 算法训练)sort排序
热门文章
- 有研究irrlicht引擎的吗,交流交流
- 硬盘结构及硬盘错误的解决方法(一)
- python删除两个excel表中的相同元素_python筛选出两个文件中重复行的方法
- 黑马C++设计模式1
- 斯坦福大学Andrew Ng - 机器学习笔记(8) -- 推荐系统 大规模机器学习 图片文字识别...
- C#网络编程(订立协议和发送文件) - Part.4
- BFS HDOJ 2102 A计划
- hdu 4493 Tutor (水 精度)
- Sharepoint在itemUpdating中获取修改后的用户或用户组栏的值
- 博客园2013年5月份第1周源码发布详情