当前位置: 首页 > news >正文

丽江市网站建设_网站建设公司_API接口_seo优化

成都网站建设行业分析,办公空间设计图纸,东莞学网站建设难吗,python如何与wordpressWPF 带CheckBox、图标的TreeView 在WPF实际项目开发的时候#xff0c;经常会用到带CheckBox的TreeView#xff0c;虽然微软在WPF的TreeView中没有提供该功能#xff0c;但是微软在WPF中提供强大的ItemTemplate模板功能和自定义样式#xff0c;那我们可以自己写一个这样的控…WPF 带CheckBox、图标的TreeView 在WPF实际项目开发的时候经常会用到带CheckBox的TreeView虽然微软在WPF的TreeView中没有提供该功能但是微软在WPF中提供强大的ItemTemplate模板功能和自定义样式那我们可以自己写一个这样的控件供自己使用。  我自己写的这个比较简单。 首先写一个供TreeView使用的数据模型并且实现INotifyPropertyChanged接口用于向客户端通常是执行绑定的客户端发出某一属性值已更改的通知当属性改变时相应的UI表现也改变。主要字段Id,Name,Icon,ToolTip,IsChecked,IsExpanded,Parent,Children //*************************************************** // // 文件名FileName TreeModel.cs // // 作者Author zsm // // 创建时间CreateAt: 2013-03-18 14:23:58 // // 描述Description 供TreeView实用的数据模型 // //*************************************************** using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel;namespace Com.FMS.Model {public class TreeModel : INotifyPropertyChanged{#region 私有变量/// summary/// Id值/// /summaryprivate string _id;/// summary/// 显示的名称/// /summaryprivate string _name;/// summary/// 图标路径/// /summaryprivate string _icon;/// summary/// 选中状态/// /summaryprivate bool _isChecked;/// summary/// 折叠状态/// /summaryprivate bool _isExpanded;/// summary/// 子项/// /summaryprivate IListTreeModel _children;/// summary/// 父项/// /summaryprivate TreeModel _parent;#endregion /// summary/// 构造/// /summarypublic TreeModel(){Children new ListTreeModel();_isChecked false;IsExpanded false;_icon /Images/16_16/folder_go.png;}/// summary/// 键值/// /summarypublic string Id{get { return _id; }set { _id value; }}/// summary/// 显示的字符/// /summarypublic string Name{get { return _name; }set { _name value; }}/// summary/// 图标/// /summarypublic string Icon{get { return _icon; }set { _icon value; }}/// summary/// 指针悬停时的显示说明/// /summarypublic string ToolTip {get {return String.Format({0}-{1}, Id, Name);}}/// summary/// 是否选中/// /summarypublic bool IsChecked{get{return _isChecked;}set{if (value ! _isChecked){_isChecked value;NotifyPropertyChanged(IsChecked);if (_isChecked){//如果选中则父项也应该选中if (Parent ! null){Parent.IsChecked true;}}else{//如果取消选中子项也应该取消选中foreach (TreeModel child in Children){child.IsChecked false;}}}}}/// summary/// 是否展开/// /summarypublic bool IsExpanded{get { return _isExpanded; }set{if (value ! _isExpanded){//折叠状态改变_isExpanded value;NotifyPropertyChanged(IsExpanded);}}}/// summary/// 父项/// /summarypublic TreeModel Parent{get { return _parent; }set { _parent value; }}/// summary/// 子项/// /summarypublic IListTreeModel Children{get { return _children; }set { _children value; }}/// summary/// 设置所有子项的选中状态/// /summary/// param nameisChecked/parampublic void SetChildrenChecked(bool isChecked){foreach (TreeModel child in Children){child.IsChecked IsChecked;child.SetChildrenChecked(IsChecked);}}/// summary/// 设置所有子项展开状态/// /summary/// param nameisExpanded/parampublic void SetChildrenExpanded(bool isExpanded) {foreach (TreeModel child in Children){child.IsExpanded isExpanded;child.SetChildrenExpanded(isExpanded);}}/// summary/// 属性改变事件/// /summarypublic event PropertyChangedEventHandler PropertyChanged;private void NotifyPropertyChanged(String info){if (PropertyChanged ! null){PropertyChanged(this, new PropertyChangedEventArgs(info));}}} } 创建一个用户控件主要含有一个TreeView控件ContextMenu右键菜单项UI代码如下其中的路径请根据实际修改 UserControl x:ClassCom.FMS.View.UserControls.ZsmTreeViewxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006 xmlns:dhttp://schemas.microsoft.com/expression/blend/2008 xmlns:localclr-namespace:Com.FMS.Modelmc:Ignorabled d:DesignHeight300 d:DesignWidth300GridDockPanelBorder DockPanel.DockBottomStackPanel OrientationHorizontal ToolTip右键有更多功能哦Image Height16 Width16 SourceImages/16_16/emoticon_smile.png/ImageLabel Content右键有更多功能哦 ForegroundGray/Label/StackPanel/BorderBorderTreeView NametvZsmTreeTreeView.ContextMenuContextMenuMenuItem NamemenuExpandAll Header全部展开 ClickmenuExpandAll_ClickMenuItem.IconImage Source/Com.FMS;component/Images/16_16/folder_open_arrow.png //MenuItem.Icon/MenuItemMenuItem NamemenuUnExpandAll Header全部折叠 ClickmenuUnExpandAll_ClickMenuItem.IconImage Source/Com.FMS;component/Images/16_16/folder_close_arrow.png //MenuItem.Icon/MenuItemMenuItem NamemenuSelectAll Header全部选中 ClickmenuSelectAll_ClickMenuItem.IconImage Source/Com.FMS;component/Images/16_16/tick.png //MenuItem.Icon/MenuItemMenuItem NamemenuUnSelectAll Header全部取消 ClickmenuUnSelectAll_ClickMenuItem.IconImage Source/Com.FMS;component/Images/16_16/delete.png //MenuItem.Icon/MenuItem/ContextMenu/TreeView.ContextMenuTreeView.ItemContainerStyleStyle TargetTypeTreeViewItemSetter PropertyIsExpanded Value{Binding IsExpanded, ModeTwoWay}/SetterEventSetter EventTreeViewItem.PreviewMouseRightButtonDown HandlerTreeViewItem_PreviewMouseRightButtonDown//Style/TreeView.ItemContainerStyleTreeView.ItemTemplateHierarchicalDataTemplate DataType{x:Type local:TreeModel} ItemsSource{Binding Children}StackPanel Margin-2,0,0,0 OrientationHorizontal x:NamestaTreeCheckBox ToolTip{Binding ToolTip} FontSize14 FontFamily微软雅黑 Tag{Binding Children} IsChecked{Binding IsChecked, ModeTwoWay}StackPanel OrientationHorizontalImage VerticalAlignmentCenter Source{Binding Icon} /ImageTextBlock Text{Binding Name}/TextBlock/StackPanelCheckBox.ContextMenuContextMenuMenuItem NamemenuSelectAllChild Header全部选中子项 ClickmenuSelectAllChild_ClickMenuItem.IconImage Source/Com.FMS;component/Images/16_16/tick.png //MenuItem.Icon/MenuItem/ContextMenu/CheckBox.ContextMenu/CheckBox/StackPanelHierarchicalDataTemplate.TriggersDataTrigger Binding{Binding IsChecked} ValuetrueSetter TargetNamestaTree PropertyBackground ValueWhite//DataTrigger/HierarchicalDataTemplate.Triggers/HierarchicalDataTemplate/TreeView.ItemTemplate/TreeView/Border/DockPanel/Grid /UserControl 交互逻辑的代码中现在主要有控件数据ItemsSourceData属性设置对应Id的项为选中状态SetCheckedById、忽略层次关系的情况下获取选中项CheckedItemsIgnoreRelation等方法以及右键的选中所有子项菜单、全部选中、全部取消选中、全部折叠、全部展开等事件交互逻辑代码为 //*************************************************** // // 文件名FileName ZsmTreeView.xaml.cs // // 作者Author zsm // // 创建时间CreateAt: 2013-03-15 16:52:40 // // 描述Description 带CheckBox的TreeView控件的交互逻辑代码 // //*************************************************** using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes;namespace Com.FMS.View.UserControls {/// summary/// ZsmTreeView.xaml 的交互逻辑/// /summarypublic partial class ZsmTreeView : UserControl{#region 私有变量属性/// summary/// 控件数据/// /summaryprivate IListModel.TreeModel _itemsSourceData;#endregion/// summary/// 构造/// /summarypublic ZsmTreeView(){InitializeComponent();}/// summary/// 控件数据/// /summarypublic IListModel.TreeModel ItemsSourceData {get { return _itemsSourceData; }set{_itemsSourceData value;tvZsmTree.ItemsSource _itemsSourceData;}}/// summary/// 设置对应Id的项为选中状态/// /summary/// param nameid/param/// returns/returnspublic int SetCheckedById(string id, IListModel.TreeModel treeList) {foreach (var tree in treeList){if (tree.Id.Equals(id)){tree.IsChecked true;return 1;}if (SetCheckedById(id, tree.Children) 1){return 1;}}return 0;}/// summary/// 设置对应Id的项为选中状态/// /summary/// param nameid/param/// returns/returnspublic int SetCheckedById(string id){foreach (var tree in ItemsSourceData){if (tree.Id.Equals(id)){tree.IsChecked true;return 1;}if (SetCheckedById(id, tree.Children) 1){return 1;}}return 0;}/// summary/// 获取选中项/// /summary/// returns/returnspublic IListModel.TreeModel CheckedItemsIgnoreRelation(){return GetCheckedItemsIgnoreRelation(_itemsSourceData);}/// summary/// 私有方法忽略层次关系的情况下获取选中项/// /summary/// param namelist/param/// returns/returnsprivate IListModel.TreeModel GetCheckedItemsIgnoreRelation(IListModel.TreeModel list){IListModel.TreeModel treeList new ListModel.TreeModel();foreach (var tree in list){if (tree.IsChecked){treeList.Add(tree);}foreach (var child in GetCheckedItemsIgnoreRelation(tree.Children)){treeList.Add(child);}}return treeList;}/// summary/// 选中所有子项菜单事件/// /summary/// param namesender/param/// param namee/paramprivate void menuSelectAllChild_Click(object sender, RoutedEventArgs e){if (tvZsmTree.SelectedItem ! null){Model.TreeModel tree (Model.TreeModel)tvZsmTree.SelectedItem;tree.IsChecked true;tree.SetChildrenChecked(true);}}/// summary/// 全部展开菜单事件/// /summary/// param namesender/param/// param namee/paramprivate void menuExpandAll_Click(object sender, RoutedEventArgs e){foreach (Model.TreeModel tree in tvZsmTree.ItemsSource){tree.IsExpanded true;tree.SetChildrenExpanded(true);}}/// summary/// 全部折叠菜单事件/// /summary/// param namesender/param/// param namee/paramprivate void menuUnExpandAll_Click(object sender, RoutedEventArgs e){foreach (Model.TreeModel tree in tvZsmTree.ItemsSource){tree.IsExpanded false;tree.SetChildrenExpanded(false);}}/// summary/// 全部选中事件/// /summary/// param namesender/param/// param namee/paramprivate void menuSelectAll_Click(object sender, RoutedEventArgs e){foreach (Model.TreeModel tree in tvZsmTree.ItemsSource){tree.IsChecked true;tree.SetChildrenChecked(true);}}/// summary/// 全部取消选中/// /summary/// param namesender/param/// param namee/paramprivate void menuUnSelectAll_Click(object sender, RoutedEventArgs e){foreach (Model.TreeModel tree in tvZsmTree.ItemsSource){tree.IsChecked false;tree.SetChildrenChecked(false);}}/// summary/// 鼠标右键事件/// /summary/// param namesender/param/// param namee/paramprivate void TreeViewItem_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e){TreeViewItem item VisualUpwardSearchTreeViewItem(e.OriginalSource as DependencyObject) as TreeViewItem;if (item ! null){item.Focus();e.Handled true;}}static DependencyObject VisualUpwardSearchT(DependencyObject source){while (source ! null source.GetType() ! typeof(T))source VisualTreeHelper.GetParent(source);return source;}} } 在使用控件的时候要在xaml中引入命名控件根据实际引入   xmlns:myclr-namespace:Com.FMS.View.UserControls !--使用控件--my:ZsmTreeView x:NameztvModule /  为控件赋值 ztvModule.ItemsSourceData treeList;//treeList为IListTreeModel类型    本文转自 http://www.cnblogs.com/zsmhhfy/archive/2013/03/18/2965755.html 转载于:https://www.cnblogs.com/1175429393wljblog/p/7479144.html
http://www.lebaoying.cn/news/26465.html

相关文章:

  • 网站页面设计效果图嘉陵 建设 摩托车官方网站
  • 网站建设后台怎么弄苏州做网站专业的公司
  • 台州免费做网站wordpress win2003
  • 域名交易网站建设dw建网站怎么做
  • 做一个网站的基本步骤太原自动seo
  • 做搬运的话哪个网站好网站建设案例的公司
  • 合肥网站设计建有没有公司做农副产品网站的
  • 让网站会员做产品标签确认怎么开公众号微信
  • DW做旅游网站毕业设计建网站买的是什么
  • 阿里云虚拟主机做淘客网站广东省消防建设工程申报网站
  • 网站最新一次改版时间什么意思柳城网站开发
  • 网站flsh怎么做做任务打字赚钱的网站
  • 网站建设写百度风云排行榜官网
  • 天津网络网站公司北京网站建设软件
  • 长沙官网网站推广优化网站备案号查询平台
  • 关于网站建设项目的投诉函公司做网站宣传怎么做
  • 弹性云主机做网站广告设计有创意的名字
  • 网站app制作教程淄博网上商城制作
  • 网站小logo设计建立网站看病的经济问题
  • 如何做网站拉动条软文推广的标准类型
  • 昌吉网站建设电话气动喷枪网站建设
  • 网站开发流程原理wordpress 替换编辑器
  • 河南企业网站建设价格最好的网站设计公
  • 网站建设硬件方案中国企业网站建设
  • 南宁网站建设q.479185700強wordpress 前台插件
  • 怎么看网站备案号南宁比优建站
  • 做任务兼职赚钱的网站有哪些网站中加入企业qq
  • 电子商务网站建设收益市场调研分析报告范文
  • php 建设网站制作亿网互联
  • 企业网站的特点是什么建设网站需要哪些元素