1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > WPF TreeView 控件样式

WPF TreeView 控件样式

时间:2019-06-22 20:18:02

相关推荐

WPF TreeView 控件样式

TreeView

树视图(TreeView)控件以树的方式显示集合,可以显示层次关系。

Nodes属性

该属性用于设计TreeView控件的节点。

具体方法

在TreeView的属性栏找到Nodes,点击 …,弹出“TreeNode编辑器”窗口。

“添加根”按钮可以为TreeView控件添加根结点,添加根结点后,“添加子级”按钮变为可用。

ImageList属性

用于设置从中获取图像的ImageList控件,该属性的设置必须与ImageList控件相配合。

Scrollable属性

用于指示当TreeView控件包含多个节点,无法全部可视时确定是否使用滚动条,有true和false两个值。

ShowLines属性

用于指示是否在同级别节点以及父节点与子节点之间显示连线。有true和false两个值。

ShowPlusMinus属性

用于指示是否在父节点旁边显示“+/-”按钮。有true和false两个值。

ShowRootLines属性

用于指示是否在根结点之间显示连线。有true和false两个值。

SelectedNode属性

用于获取或设置TreeView控件中被选中的节点。

AfterSelect事件

TreeView控件最常用的事件为AfterSelect事件,当更改TreeView控件中选定的内容时触发该事件。TreeView型的控件,如Button、Lable、Image等控件,可以通过绑定到数据源并使用HieratchicalDataTemplate对象来填充其树。可以修改默认ControlTemplate以使控件具有独特的外观。这里举一个完整的TreeView实例来进行说明。本节主要实现自定义控件样式+数据源绑定动态添加父子节点的功能

1、主窗体中加入TreeView控件

由于我们的这个TreeView控件父子节点字体样式、背景颜色等不同,所以使用Binding的方式通过后台进行设置。

2、TreeView的Model:TreeViewNode.cs

public class TreeViewNode : INotifyPropertyChanged

{

public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)

{

PropertyChangedEventHandler handler = PropertyChanged;

if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));

}

#region 属性字段private int id;/// <summary>/// 节点ID/// </summary>public int Id{get{return id;}set{id = value;}}private int parentId;/// <summary>/// 父节点ID/// </summary>public int ParentId{get{return parentId;}set{parentId = value;}}private string nodeName;/// <summary>/// 节点名称(最多六个字符)/// </summary>public string NodeName{get{return nodeName;}set{nodeName = value;if (nodeName.Length > 6){//非添加项考虑字符长度if (this.isNodeAdd != true && this.isChildNodeAdd != true){nodeName = nodeName.Substring(0, 6);}}OnPropertyChanged("NodeName");}}private bool isChildNode;/// <summary>/// 是否是子节点/// </summary>public bool IsChildNode{get{return isChildNode;}set{isChildNode = value;}}private bool isNodeAdd;/// <summary>/// 是否添加节点/// </summary>public bool IsNodeAdd{get{return isNodeAdd;}set{isNodeAdd = value;}}private bool isChildNodeAdd;/// <summary>/// 是否是添加子节点/// </summary>public bool IsChildNodeAdd{get{return isChildNodeAdd;}set{isChildNodeAdd = value;}}private ObservableCollection<TreeViewNode> childNodes;/// <summary>/// 子节点数据/// </summary>public ObservableCollection<TreeViewNode> ChildNodes{get{if (childNodes == null){childNodes = new ObservableCollection<TreeViewNode>();childNodes.CollectionChanged += new NotifyCollectionChangedEventHandler(OnMoreStuffChanged);}return childNodes;}set{childNodes = value;}}private void OnMoreStuffChanged(object sender, NotifyCollectionChangedEventArgs e){if (e.Action == NotifyCollectionChangedAction.Add){TreeViewNode stuff = (TreeViewNode)e.NewItems[0];stuff.ParentId = this.Id;}else if (e.Action == NotifyCollectionChangedAction.Remove){TreeViewNode stuff = (TreeViewNode)e.OldItems[0];if (stuff.ParentId == this.Id){stuff.ParentId = 0;}}}#region 界面展示相关属性//根据节点类型设置Marginpublic string Margining{get{double padLeft;if (this.isChildNode == true || this.isNodeAdd == true){padLeft = 36;}else{padLeft = 10;}return string.Format("{0},0,0,0", padLeft);}}//添加节点按钮是否展示public Visibility ShowAddButton{get{if (this.isChildNode == false && this.isNodeAdd == true && this.isChildNodeAdd == false)return Visibility.Visible;elsereturn Visibility.Collapsed;}}//根据节点设置分隔线public string ShowBorderThickness{get{if (this.isChildNode == false && this.isChildNodeAdd == false)return string.Format("0,1,0,0");elsereturn string.Format("0,0,0,0");}}//根据子父节点设置字体大小public int SetFontSize{get{if (this.isChildNode == true)return 12;elsereturn 14;}}//根据子父节点设置字体宽度public string SetFontWeight{get{if (this.isChildNode == true)return "Normal";elsereturn "Bold";}}//根据子父节点设置字体颜色public string SetForeground{get{if (this.isChildNode == true || this.isNodeAdd == true)return "#999999";elsereturn "#000000";}}//根据子父节点设置背景颜色public string SetBackground{get{if (this.isChildNode == true || this.isNodeAdd == true)return "#ffffff";elsereturn "#87CEEB";}}//节点是否展开public bool SetIsExpanded{get{if (this.isChildNode != true || this.isNodeAdd != true)return false;elsereturn true;}}#endregion#endregion#region 构造函数public TreeViewNode(){}public TreeViewNode(int _id, int _parentId, bool _isChildNode, bool _isChildNodeAdd, bool _isNodeAdd, string _nodeName){this.id = _id;this.parentId = _parentId;this.isChildNode = _isChildNode;this.isChildNodeAdd = _isChildNodeAdd;this.isNodeAdd = _isNodeAdd;this.nodeName = _nodeName;}#endregion

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。