WPF中的DataGrid中Column的IsReadOnly和VIsibility等属性绑定时,总没有任何效果,输出里也显示找不到,搜了半天才发现,原来Column不属于visual 或 logical tree,所以不能在树上搜索他的绑定源,需要借助其他方法给属性指定数据源,方法如下:
原文地址:
https://stackoverflow.com/questions/15494226/cannot-find-source-for-binding-with-reference-relativesource-findancestor
<UserControl.Resources>
<local:BindingProxy x:Key="proxy" Data="{Binding}" />
</UserControl.Resources>
<DataGridTemplateColumn Visibility="{Binding Data.IsVisible,
Source={StaticResource proxy},
Converter={StaticResource BooleanToVisibilityConverter}}">
public class BindingProxy : Freezable
protected override Freezable CreateInstanceCore()
return new BindingProxy();
public object Data
get { return (object)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
// Using a DependencyProperty as the backing store for Data.
// This enables animation, styling, binding, etc...
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("Data", typeof(object),
typeof(BindingProxy), new UIPropertyMetadata(null));
原文地址:
https://stackoverflow.com/questions/15494226/cannot-find-source-for-binding-with-reference-relativesource-findancestor
<DataGrid ItemsSource="{Binding Items1}" CanUserAddRows="False"
AutoGenerateColumns="False" HeadersVisibility="All">
<DataGrid.Resources>
<model:BindingProxy x:Key="DataContextProxy" Data="{Binding}" />
在项目开发的过程,通常会遇到一些表格数据的绑定,因为没有WPF的开发经验所以一边摸索一边开发,所幸WPF的上手难度不大,开发过程较为顺利。不过在使用DataGrid的时候还是遇到了一点阻绊遇。所以在这里讲一下这个DataGrid应该怎么用,以及要注意的事情。DataGrid是个非常实用的控件,可以用来展示及获取较为复杂的数据结构。1、在资源视图xml文件中添加DataGrid,并设置绑定,如下。在初始化代码中设置DataGrid绑定到的对象。
一、基础知识
1、DataGrid控件:用来显示数据的控件,从对象集合中获取信息并在具有行和单元格的网格中显示信息。每行和单独的对象相对应,并且每列和对象的某个属性相对应。
2、在DataGrid 中同时包含“自动生成列”与“用户自定义列” 由属性AutoGenerateColumns控制。
<DataGrid Name="dataGrid1" AutoGenerateColumns...
在WinForm或者WebForm中我们有一大批的Grid控件供我们使用,DataGridView,GridView,Repeater等等,这样的网格数据空间给我们提供了极大的方便去让数据以可定义的方式显示并提供诸如导航,分页,排序,过滤,数据更新等附加操作 ,而程序员所需要付出的却很少。但在WPF中我们通常并不具备这么优越的网格控件,而要做到这些除了用Grid.RowDefinitions和Gr
链接: msdn对setcurrentvalue()的解释
对WPF了解的朋友一定对setValue()很熟悉。但是对SetCurrentValue()就不一定了,用的比较多的时候是自己写一个新控件,处理自己注册的DependencyProperty属性时。
· 1、先看一下这个setcurrentvalue()方法的注释
// 摘要: