WPF treeview扩展
记录一下工作中遇到的问题,以便以后忘记了可以来看.
在工作中遇到一个问题,就是要实现类型如下的界面,没有使用Telerik和Dev库。本来最开始是想使用Datagrid,但不知道怎么实现treeview,后来遍使用treeview。
前端xaml代码:
<TreeView x:Name="mytreeview">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Nodes}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding level,Converter={StaticResource LevelToWidthConverter}}"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Content}"/>
<CheckBox IsChecked="{Binding IsChecked}"
Grid.Column="1"/>
</Grid>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
其中下面的用于控制文字和Checkbox之间的距离。
<ColumnDefinition Width="{Binding level,Converter={StaticResource LevelToWidthConverter}}"/>
后台代码:
private void InitDatabase()
{
List<MyTreeview> lists = new List<MyTreeview>();
MyTreeview node = new MyTreeview("分类", false, 0);
MyTreeview node1 = new MyTreeview("水果", false,1);
MyTreeview node2 = new MyTreeview("颜色", false, 1);
MyTreeview node3 = new MyTreeview("蔬菜", false, 1);
MyTreeview node4 = new MyTreeview("苹果", false, 2);
MyTreeview node5 = new MyTreeview("红色", false, 2);
MyTreeview node6 = new MyTreeview("绿色", false, 2);
MyTreeview node7 = new MyTreeview("西红柿", false, 2);
node1.Nodes.Add(node4);
node2.Nodes.Add(node5);
node2.Nodes.Add(node6);
node3.Nodes.Add(node7);
node.Nodes.Add(node1);
node.Nodes.Add(node2);
node.Nodes.Add(node3);
lists.Add(node);
mytreeview.ItemsSource = lists;
}
}
public class MyTreeview:INotifyPropertyChanged
{
public MyTreeview(string Content,bool IsChecked,int level)
{
this.Content = Content;
this.IsChecked = IsChecked;
this.level = level;
Nodes = new List<MyTreeview>();
}
public string Content { get; set; }
public bool IsChecked { get; set; }
public int level { get; set; }
public List<MyTreeview> Nodes { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
宽度转换:
public class LevelToWidthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || (int)value == 0)
return 200;
return 200 - (int)value * 20;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
WPF treeview扩展的更多相关文章
- WPF TreeView SelectedItemChanged called twice
How to avoid WPF TreeView SelectedItemChanged being called twice Very often, we need to execute some ...
- WPF TreeView HierarchicalDataTemplate
原文 WPF TreeView HierarchicalDataTemplate HierarchicalDataTemplate 的DataType是本层的绑定,而ItemsSource是绑定下层的 ...
- WPF TreeView Indent 减少节点的缩进
www.swack.cn - 原文链接:WPF TreeView Indent 减少节点的缩进 问题 最近一个需求,需要在界面中实现Windows资源管理器TreeView的界面.但是我发现,我做出的 ...
- WPF TreeView的使用
WPF提供了treeView控件,利用该控件开发者可以将数据分层显示在树结构中.当然其中需要用到Binding的机制,有用的类包括:ObjectDataProvider.DataTemplate.Hi ...
- 2.6 wpf标记扩展
1.什么是标记扩展?为什么要有标记扩展? 标记扩展是扩展xmal的表达能力 为了克服现存的类型转换机制存在的 常用的标记扩展有如下: x:Array 代表一个.net数组,它的子元素都是数组元素.它必 ...
- WPF TreeView 虚拟化-设置滚动到选中项
前言 列表滚动到具体的数据项? ListBox提供了简易快捷的滚动定位函数ScrollIntoView. TreeView树状结构列表,则没有此类方法,无法与ListBox一样,直接设置滚动到具体的数 ...
- 【原创】WPF TreeView带连接线样式的优化(WinFrom风格)
一.前言 之前查找WPF相关资料的时候,发现国外网站有一个TreeView控件的样式,是WinFrom风格的,样式如下,文章链接:https://www.codeproject.com/tips/67 ...
- wpf TreeView
<Window x:Class="WpfTutorialSamples.TreeView_control.TreeViewDataBindingSample" ...
- WPF TreeView绑定字典集合
<TreeView Name="Tree" HorizontalAlignment="Left" Height="269" Width ...
随机推荐
- 身份证号码的正则表达式及验证详解(JavaScript,Regex)
简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案.本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案. 身份证号码说明 居民身份证号码,正确.正式的称谓应该是&q ...
- JDK源码及其他框架源码解析随笔地址导航
置顶一篇文章,主要是整理一下写过的JDK中各个类的源码及其他框架源码解析的文章,方便自己随时阅读也方便网友朋友们阅读与指正 基础篇 从为什么String=String谈到StringBuilder和S ...
- javaweb代码生成器,专注于javaweb项通用目的代码生成器
该项目为javaWEB项目通用代码生成器,根据数据库表和自定义代码模板生成相应的jsp,js,java文件,生成到指定路径下,javaweb项目开发利器: 项目开源地址:https://gitee.c ...
- C#多线程编程(7)--锁
一提到线程同步,就会提到锁,作为线程同步的手段之一,锁总是饱受质疑.一方面锁的使用很简单,只要在代码不想被重入的地方(多个线程同时执行的地方)加上锁,就可以保证无论何时,该段代码最多有一个线程在执行: ...
- READ TABLE 的用法
SORT ITAB BY '你想比较的列'. " 排序以增加二分查找的速度 READ TABLE itab with key 'itab中某列' = ‘目标列' BINARY SEARCH. ...
- 什么是IPFS?(一)
写在前面: 今天先写到这里, 关于IPFS的所有事情小编都想快点告诉大家, 但毕竟精力有限, 小编尽量抽出时间提供更多的关于IPFS的信息. ----------------------------- ...
- C语言第三次博客作业---单层循环结构
一.PTA实验作业 题目1 1.实验代码 int N,i; //N为用户数,i记录循环变量 double height; //height放身高 char sex; //sex放性别F为女,M为男 s ...
- const 相关知识 const和指针、const和引用
以前老是对const概念不清不楚,今天算是好好做个笔记总结一下.以下内容包括1)常量指针(指针本身是常量),2)指针常量(指针指向的是常量对象),3)常量引用,4)const成员函数. 常量指针,指针 ...
- HTML定位简介
转载出处 定位一直是WEB标准应用中的难点,如果理不清楚定位那么可能应实现的效果实现不了,实现了的效果可能会走样.如果理清了定位的原理,那定位会让网页实现的更加完美. 定位的定义:在CSS中关于定位的 ...
- Adriod与HTML+JS的交互
本篇主要实现的功能点: Android 调用HTML中的javascript脚本 HTML中的javascript脚本调用Android本地代码 Android 调用HTML中的javascript脚 ...