设为首页 收藏本站
查看: 1198|回复: 0

WPF学习版Win7之TreeView

[复制链接]

尚未签到

发表于 2015-5-15 08:04:51 | 显示全部楼层 |阅读模式
  初衷:为了更好介绍 WPF  应用,所以这个教学版 Windows 7 与原版的不同!希望朋友们喜欢 WPF,喜欢 .NET。
  (首次介绍 Blend ,为了清晰故截图较多)
  本小节:
  
       
  • Blend 3 基本应用。   
  • 简单模拟 TreeView 目录树。
  Blend 创建原型
  
       
              
       
  •      
    新建一个 WPF 应用程序。   
  • 新建一个 TreeView 到 ''LayoutRoot''(Grid)。      
    DSC0000.png    
  • 简单创建一个数据源,Property2 的 Type 变为 Image, 并转为层级结构。      
    DSC0001.png     DSC0002.png DSC0003.png    
  • 拖拽上图红圈 Collection 到 TreeView 中,选中 TreeView ,并设为自动大小。  
    DSC0004.png   Blend 基本模板样式设计       
  • 右击 TreeView,编辑 ''ItemTemplate'' 模板。      
    DSC0005.png    
  • 选中 Image,并设为自动大小,拖拽 Image 到 TextBlock 上面,最后设 StackPanel 高度为19并且水平排列。      
    DSC0006.png DSC0007.png    
  • 回到上级目录,选中 TreeView 并编辑 ItemContainerStyle 。      
    DSC0008.png DSC0009.png    
  • 解散 ''Bd'' 组合。 选中 ''Expander'' 和 'PART_Header'',用 Border 合并,并重置外边界,设 Grid.ColumnSpan 为 3。  
    DSC00010.png     DSC00011.png DSC00012.png DSC00013.png DSC00014.png
  Blend 基本效果设计
  
       
  • 点击 ''-Trigger'' 删除 TreeViewItem 模板中的默认 IsSelected 触发器,避免选中 TreeViewItem  项时 Foreground属性值(一般为文本颜色)不确定变化。  
    DSC00015.png    
  • 注意!''border'' 的 Borderbursh 必须填充(可以透明),否则不触发事件!        
    DSC00016.png DSC00017.png   
       
  • 点击 ''+Property'',依次选择合适的触发事件属性。 同理再新建一 ''Trigger'' ,设置手形光标。      
    DSC00018.png DSC00019.png    
  • 同理,设置 TreeVIewItem 选中时的触发器样式。      
    DSC00020.png    
  • 最后,在 XAML 中设置 ToggleButton(即三角形的Expander)。      Visibility="{
    Binding IsMouseOver,
    RelativeSource={RelativeSource FindAncestor,
    AncestorLevel = 1,
    AncestorType={x:Type TreeView}},
    Converter={StaticResource BooleanToVisibilityConverter},
    Mode=Default}"
  • 结束。

小结:本小例子主要通过简单模拟 TreeView 目录树介绍了 Blend 3 的基本使用,还有:


  • Blend 可以快速定义数据源,方便测试控件模板样式触发器(所见即所得)。
  • Change Layout Type,Group Into,Ungroup 可以方便变换布局。
  • 少用 Edit Template,建议先考虑 Edit Additional Templates,可以减少 Blend 工具自动生成的默认模板样式代码。
  • 利用 RelativeSource 可以绑定到模板外的元素控件,Converter 可以转换不同类型的绑定。

小补充:


  • 当IsMouseOver 和 IsSelected 两个触发器同时触发,因为他们设置的目标与属性相同:

    所以最后面触发器 IsSelected 设置的属性生效。
  • 有时 Border 需要设置透明填充或边框透明,否则鼠标无法触发事件(视觉树)。
  • RelativeSource 还可以:(后面将介绍)

    • {Binding RelativeSource={RelativeSource Self}}
    • {Binding RelativeSource={RelativeSource TemplatedParent}}
    • {Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type
      desiredType}}}
    • {Binding RelativeSource={RelativeSource FindAncestor,
      AncestorLevel=n, AncestorType={x:Type desiredType}}}
    • {Binding RelativeSource={RelativeSource PreviousData}}


  • Converter 详细参见上一篇文章。
  • 示例下载

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-67052-1-1.html 上篇帖子: 笔记本多硬盘win7下U盘安装Cnetos7引导问题! 下篇帖子: 用Win7任务计划定时执行
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表