通过绑定修改DataGrid的Column的Visibility
来源:互联网 发布:2017mac口红色号推荐 编辑:程序博客网 时间:2024/05/07 01:00
问题:因为
DataGridColumn
s不是可视树的一部分,他们不能使用datagrid的datacontext。解决方法
1
:代理类
public class BindingProxy : Freezable { #region Overrides of Freezable protected override Freezable CreateInstanceCore() { return new BindingProxy(); } #endregion public object Data { get { return (object)GetValue(DataProperty); } set { SetValue(DataProperty, value); } } public static readonly DependencyProperty DataProperty = DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy));}
<DataGrid …> <DataGrid.Resources> <local:BindingProxy x:Key="proxy" Data="{Binding}"></local:BindingProxy> </DataGrid.Resources> <DataGrid.Columns> <DataGridTextColumn Header="Grade" Visibility="{Binding Data.MyColumnVisibility, Source={StaticResource proxy}}" Binding="{Binding Path=Grade}"> </DataGridTextColumn> </DataGrid.Columns></DataGrid>
解决方法
2
:代元素
1.在用户控件的Resources里加一个代理FrameworkElement,并绑定控件的datacontex
2.把这个代理控件放在一个不可见的ContentControl里
<FrameworkElement x:Name="dummyElement" Visibility="Collapsed" DataContext="{Binding}"/>
3.将DataGridColumn的Visibility绑定Datacontext中的属性,比如IsEnable、或NoVisibility,Source采用x:Reference dummyElement。
4.如果绑定属性是bool类型,还要使用Converter转换一下
<DataGrid …> <DataGrid.Columns> <DataGridTextColumn Header="No." Visibility="{Binding DataContext.IsEnable, Source={x:Reference dummyElement},Converter={StaticResource BooleanToVisibilityConverter}}" Binding="{Binding Path=No}"> </DataGridTextColumn> <DataGridTextColumn Header="Name" Visibility="{Binding DataContext.NoVisibility, Source={x:Reference dummyElement}}" Binding="{Binding Path=Name}"> </DataGridTextColumn> </DataGrid.Columns></DataGrid>
参考网址:http://stackoverflow.com/questions/22073740/binding-visibility-for-datagridcolumn-in-wpf?noredirect=1
代码:http://download.csdn.net/download/xiudou_123/9836031
0 0
- 通过绑定修改DataGrid的Column的Visibility
- Silverlight Visibility 属性的绑定
- 通过Formatter格式化器格式化DataGrid组建里面的Column
- 如何通过IValueConverter为DataGrid的列绑定样式?
- DataGrid的数据绑定
- c# datagrid的绑定
- datagrid绑定列下的数据通过绑定Button的提取
- AdapterView.setEmptyView修改View的visibility
- Datagrid中添加的radiobutton不能通过后台代码修改
- DataGrid绑定数据的方式
- DataGrid中ContextMenu的绑定
- wpf的datagrid绑定数据
- DataGrid的修改、删除
- DataGrid的修改、删除
- 修改DataGrid的呈现
- visibility:hidden的元素绑定click event会起作用吗
- 动态改变绑定后的DataGrid的列宽(测试通过)
- 如何修改 和某表绑定的DataGrid的列标题?
- android ListView,SimpleCursorAdapter
- Makefile中wildcard函数使用方法
- Makefile中notdir函数使用方法
- 最短路 多条路径
- c++随机数 普通和高斯分布
- 通过绑定修改DataGrid的Column的Visibility
- MySQL修改root密码的4种方法
- 动态网页开发基础
- 循环
- Linker command failed with exit code 1(use -v to see invocation)
- CCF NOI1044 最近元素
- 打印uboot和内核系统的启动信息方法
- 分布式调用跟踪与监控实战
- jsp基础