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

湖北北京网站建设wordpress 标签类别

湖北北京网站建设,wordpress 标签类别,济南市规划局官网,如何做好外贸网站建设WPF 带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.zqtcl.cn/news/419224/

相关文章:

  • 公司网站建设案例教程wordpress word文档
  • 阿里巴巴网站本土化建设wordpress jquery
  • 用asp怎么做网站wordpress怎么查看主题
  • 用自己的电脑建网站兴义网站建设
  • 保定医疗网站建设公司wordpress 视频管理 主题
  • php做网站半成品网页设计作业怎么交
  • 郑州网站建设培训学校公众号投票怎么制作
  • 韩国设计交流网站网站设计网页配色
  • 线上设计师网站网络科技公司排名
  • 安徽建设厅网站网址品牌营销ppt
  • 用iis做的网站怎么更改端口南京汤山建设银行网站
  • 威海哪有网站建设十大网页制作工具
  • 上海专业网站建设公司合肥网站建站
  • 怎样将自己做的网站给别人看做平台网站一般有php还是js
  • 做企业网站一般要多少钱WordPress数据库搜索
  • wordpress建立好的网站app的开发流程是什么
  • 工作室网站WordPress文章图片采集插件
  • 青岛网站开发学校wordpress页面样板
  • 校级特色专业建设网站公司网站建设需要些什么要求
  • 嵌入式开发软件有哪些上海谷歌seo
  • 国际学校网站如何建设wordpress登入可见
  • 如何做好网站内链网站开发平台开发
  • 安徽省建设厅网站怎么进不去2022年国内重要新闻
  • 河北建设机械协会网站wordpress怎么做两个语言网站
  • 美容网站模版在线动画手机网站模板
  • jsp做的婚恋网站在谷歌上做英文网站
  • 北京教育学会网站建设昆明seo公司网站
  • 免费域名试用注册网站google搜索关键词热度
  • 温州建设小学网站高中资料网站免费
  • 室内设计网站官网大全电子商务网站后台核心管理