WPF学习版Win7之TreeView_提高

WPF学习版Win7之TreeView_提高

ID:38584798

大小:149.00 KB

页数:7页

时间:2019-06-15

WPF学习版Win7之TreeView_提高_第1页
WPF学习版Win7之TreeView_提高_第2页
WPF学习版Win7之TreeView_提高_第3页
WPF学习版Win7之TreeView_提高_第4页
WPF学习版Win7之TreeView_提高_第5页
资源描述:

《WPF学习版Win7之TreeView_提高》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、·WPF学习版Win7之TreeView_提高朋友们,注意了!从本文开始,将使用 VisualStudio2010,Blend4 作为主要开发工具。本文包括:·Converter绑定转换及修改模板完善TreeViewItem在MouseOver时呈现外观·Behavior附加拖拽行为·Adorner装饰器装饰拖拽效果完善TreeView外观1.新建一WPF应用程序。 (注意本节开始用VS2010和Blend4开发,使用VS08或Blend3将无法正常打开工程项目。实在抱歉!但不影响查看代码学习!)2.新建一用户控件,参见上节用Ble

2、nd创建基本TreeView外观。 (整个Win7学习版不小,接下来的章节也将会创建继承UserControl或Control的用户控件,以方便管理与复用)3.TreeViewItem的ControlTemplate实质布局如下图,一个两行三列的Grid:  4.默认布局致使子节点(即ItemHost)总会比父节点向右偏移第一列的宽度(值:19)。 为达到偏移效果并且使得ItemHost能横跨所有列(这样Border就可以填充整行了),现在修改如下图,两行一列的Grid,StackPanel左边被Margin填充(值:19):  1

3、.XAML中StackPanel的Margin绑定如下(绑定对象是TreeViewItem): 2.4.Conver

4、terLoginMarginLeft类定义如下(利用 VisualTreeHelper): 5.publicobjectConvert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture)6.{7.doublecolumnWidth=19.0;8.doubleleft=0.0;9.UIElementelement=valueasTreeViewItem;10.while(element.GetType()!=typeof

5、(TreeView))11.{12.element=(UIElement)VisualTreeHelper.GetParent(element);1.if(element.GetType()==typeof(TreeViewItem))2.left+=columnWidth;3.}4.returnnewThickness(left,0,0,0);}5.最初做法是绑定到到父节点的StackPanel,然后获取其Margin并在原基础上加一值(如19),但受WPF布局系统的布局顺序影响(如果用Mode=OneWaytoSource)以及

6、Converter在OneWay模式下目标数据的更新并没有导致数据源更改,以致查找上级StackPanel时Margin值没增加(如果Model=Default),所以Border都没能成功填充整行。附加行为,装饰器1.为实现附加行为,首先添加引用:System.Windows.Interactivity.dll(还需要引用相应命名空间,建议先敲上代码,再按Shitf+Alt+F10显示提示添加命名空间)2.新建一类并继承Behavior接口。 注意这里是直接把行为应用在ItemsControl控件(TreeView)而不是T

7、reeViewItem上。 因为像后面将要介绍的主显示控件将会有多种显示视图,如果每个视图都增加拖拽行为不灵活;而且如果在拖拽的对象上附加行为,当按Ctrl多选时将较难模拟Win7装饰拖拽的多个对象。classItemsControlDragDropBehavior:Behavior3.首先方法OnAttached,OnDetaching,并增加相应委托事件:4.protectedoverridevoidOnAttached()5.{6.base.OnAttached();7.this.Associate

8、dObject.PreviewMouseLeftButtonDown+=newMouseButtonEventHandler(AssociatedObject_PreviewMouseLeftButtonDown);8.......9

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。