在設計TreeView編輯狀況下,希望 TreeItemName 后续的编辑框 复选框 可以整齐排列。

参考微软提供的TREELISTVIEW,发现它是根据层级关系调整Margin 属性。

我这边按照同样的方式,实现WIDTH的宽度的递减,就可实现需要的效果。

<HierarchicalDataTemplate x:Key="TreeNodes" ItemsSource="{Binding Path=Childs,Mode=TwoWay}" >
<Grid DataContext="{Binding}" Width="{Binding Level,
Converter={StaticResource
LevelToWidthConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="" />
<ColumnDefinition Width="" />
<ColumnDefinition Width="" />
<ColumnDefinition Width="" />
<ColumnDefinition Width="" />
</Grid.ColumnDefinitions> <TextBlock Text="{Binding Name}" />
<CheckBox Grid.Column="" IsChecked="{Binding IsCheck}"
IsEnabled="{Binding Path=DataContext.IsInput,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}"
>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding Path=DataContext.NodeChangeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}"
CommandParameter="{Binding Id}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
<CheckBox Grid.Column="" IsChecked="{Binding HasAdd,Mode=TwoWay}"
IsEnabled="{Binding Path=DataContext.IsInput,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}"
>
</CheckBox>
<CheckBox Grid.Column="" IsChecked="{Binding HasEdit,Mode=TwoWay}"
IsEnabled="{Binding Path=DataContext.IsInput,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}"
>
</CheckBox>
<CheckBox Grid.Column="" IsChecked="{Binding HasEditDetail,Mode=TwoWay}"
IsEnabled="{Binding Path=DataContext.IsInput,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}"
>
</CheckBox>
<CheckBox Grid.Column="" IsChecked="{Binding HasDelete,Mode=TwoWay}"
IsEnabled="{Binding Path=DataContext.IsInput,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}"
>
</CheckBox>
</Grid>
</HierarchicalDataTemplate>

WPF TreeGrid Binding 简易实现方式的更多相关文章

  1. WPF之Binding深入探讨

    原文:http://blog.csdn.net/fwj380891124/article/details/8107646 1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在 ...

  2. WPF数据绑定Binding(二)

    WPF数据绑定Binding(二) 1.UI控件直接的数据绑定 UI对象间的绑定,也是最基本的形式,通常是将源对象Source的某个属性值绑定 (拷贝) 到目标对象Destination的某个属性上. ...

  3. WPF的Binding功能解析

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  4. WPF之Binding深入探讨--Darren

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  5. WPF之Binding【转】

    WPF之Binding[转] 看到WPF如此之炫,也想用用,可是一点也不会呀. 从需求谈起吧: 首先可能要做一个很炫的界面.见MaterialDesignInXAMLToolKit. 那,最主要的呢, ...

  6. WPF之Binding深入探讨 转载:http://blog.csdn.net/fwj380891124/article/details/8107646

    1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...

  7. 【转】WPF中Binding的技巧(一)

    WPF中Binding的技巧(一)   在WPF应用的开发过程中Binding是一个非常重要的部分. 在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的. 这里将实际中碰到 ...

  8. WPF之Binding的使用

    引出: 在WPF中Binding可以比作数据的桥梁,桥梁的两端分别是Binding的源(Source)和目标(Target).一般情况下,Binding源是逻辑层对象,Binding目标是UI层的控件 ...

  9. 深入浅出WPF之Binding的使用(一)

    在WPF中Binding可以比作数据的桥梁,桥梁的两端分别是Binding的源(Source)和目标(Target).一般情况下,Binding源是逻辑层对象,Binding目标是UI层的控件对象:这 ...

随机推荐

  1. 断点调试,issubclass和ininstance的使用

    一等公民 只要可以把一个东西赋值给一个变量,这个东西就叫一等公民 断点调试 在想要加断点的地方用鼠标点击一下,你会看到一个红色圆圈 变红的地方,程序执行到,就会暂停 断电应该加载报错之前 绿色箭头表示 ...

  2. Qt 解析命令行参数

    #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QQuickView> ...

  3. shim是什么?

    Vue响应式原理中说道:Object.defineProperty是Es5中无法shim的特性,那么这里的shim是什么呢? shim可以将新的API引入到旧的环境中,而且仅靠就环境中已有的手段实现. ...

  4. 设备驱动基础学习--/proc下增加节点

    在需要创建一个由一系列数据顺序组合而成的/proc虚拟文件或一个较大的/proc虚拟文件时,推荐使用seq_file接口. 数据结构struct seq_fille定义在include/linux/s ...

  5. CF1067C Knights 构造

    题目链接:https://codeforc.es/contest/1067/problem/C 题意:有一个无限大的棋盘,棋盘上初始放置了\(n\)个国际象棋马.如果某一个格子没有放马且能够被\(4\ ...

  6. Flask 学习之flask入门

    一.Flask的简单介绍 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请 ...

  7. datename()计算一个日期是星期几

  8. LVS+Keepalived -----> 效率最高的负载均衡器

    一. 简介  1. 负载均衡的类型  负载均衡可以采用硬件设备(例如常常听见的 F5),也可以采用软件负载 商用硬件负载设备成本通常较高(一台几十万甚至上百万),所以一般 情况下会采用软件负载 软件负 ...

  9. MySQL忘记密码(终极解决方法,亲测有效,windows版本)

    1.进入mysql的bin目录 2.net stop mysql 3.mysqld --skip-grant-tables 输入 mysqld --skip-grant-tables 回车. (--s ...

  10. linux python3编译以及 卸载,python默认为python3 ,pip默认为pip3,亲测版

    前置准备yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-de ...