本文告诉大家如何在 DataGridTextColumn 使用绑定,因为很容易绑定就找不到数据。 使用 DataGrid 有一个坑,就是 Columns 的数据绑定拿不到数据。 Header="Id" Binding="{Binding Id}"/> <DataGridTextColumn Header="Property1" Binding= "{Binding Property1}"/> <DataGridTextColumn Header="Property2" Binding="{Binding Property2 Header="Id" Binding="{Binding Id}"/> <DataGridTextColumn Header="Property1" Binding= }"/> <DataGridTextColumn> <DataGridTextColumn.Binding >
AncestorType={x:Type Window}}, Converter={StaticResource VisibilityConverter}}" /> <DataGridTextColumn 我疑惑了很久,直到看到了Visual Studio中的实时可视化树: 从图中可以看出,虽然我在 Xaml 中声明了两列 DataGridTextColumn,但他根本不在可视化树中。 那为什么 DataGridTextColumn 不在可视化树中呢? 可视化树(Visula Tree) 在上面那个问题之前,先看看什么是可视化树? 我们先从微软文档来看一下WPF中其他控件的继承树。 ,DataGridTextColumn是直接继承DependencyObject ,所以才不在可视化树结构内。 其次探索如何通过曲线救国,实现以 Binding 的方式实现隐藏DataGridTextColumn,我们借助了一个核心抽象类 System.Windows.Freezable。
—添加多值过滤器--> <c1:DataGridTextColumn.Filter> <c1:DataGridContentFilter > <c1:DataGridMultiValueFilter > </c1:DataGridTextColumn> <! —添加条件过滤器--> <c1:DataGridTextColumn.Filter> <c1:DataGridContentFilter > <c1:DataGridMultiLineTextFilter /> </c1:DataGridContentFilter> </c1:DataGridTextColumn.Filter> </c1:DataGridTextColumn> <! > </c1:DataGridTextColumn> </c1:C1DataGrid.Columns> </c1:C1DataGrid> ?
Header="Name" Binding="{Binding name}" /> <DataGridTextColumn Header="Math" Binding= Header="第一项" Binding="{Binding item1}"></DataGridTextColumn> <DataGridTextColumn Header="第二项 " Binding="{Binding item2}"></DataGridTextColumn> <DataGridTextColumn Header="第三项" Binding="{ Header="第一项" Binding="{Binding item1}"></DataGridTextColumn> <DataGridTextColumn Header="第二项" Binding="{Binding item2}"></DataGridTextColumn> <DataGridTextColumn
<DataGridTextColumn Header="{DynamicResource Address}" Width="*"/> </DataGrid.Columns> </DataGrid > </DataGridTextColumn> <DataGridTextColumn > <DataGridTextColumn.HeaderTemplate > </DataGridTextColumn> <DataGridTextColumn Width="*"> <DataGridTextColumn.HeaderTemplate > </DataGridTextColumn> </DataGrid.Columns> </DataGrid> 3. 在UI上使用x:Static绑定到对应的资源: <DataGridTextColumn Header="{x:Static local:Labels.Username}"/> 这样基本的本地化就完成了。
单元格设置为只读 问题:直接使用IsReadOnly={Binding isReadonly}无法实现,原因:DataGridTextColumn并不是一个真正的可视化元素,所以它的依赖属性如Visibility <DataGridTextColumn.CellStyle> <Style> <Setter Property="UIElement.IsEnabled" Value="{Binding IsEnabled}"></Setter> </Style> </DataGridTextColumn.CellStyle> 删除选中的行,支持多选 在Model中添加属性IsSelected
ItemsSource="{Binding Mode=Default, XPath=/MockObjects/MockObject}"> <DataGrid.Columns> <DataGridTextColumn Header="编号" Binding="{Binding XPath=@Number}"/> <DataGridTextColumn Header="姓名" Binding= "{Binding XPath=@Name}"/> <DataGridTextColumn Header="简称" Binding="{Binding XPath=@Type}"
引言 在之前写的一篇文章【WPF --- 如何以Binding方式隐藏DataGrid列】中,我先探索了 DataGridTextColumn 为什么不在可视化树结构内? Freezable CreateInstanceCore() { return new CustomFreezable(); } } 然后准备界面,但是这回跟之前不一样的是所有 DataGridTextColumn DataContext = this; InitDataGrid(); } private void InitDataGrid() { DataGridTextColumn columen1 = new DataGridTextColumn(); columen1.Header = "年龄"; columen1.Binding = new , binding); dataGrid.Columns.Add(columen1); DataGridTextColumn columen2 = new DataGridTextColumn
AutoGenerateColumns="False" d:DataContext="{d:DesignInstance local:Foo}"> </controls:DataGrid> 然后在使用 DataGridTextColumn DataContext="{d:DesignInstance local:Foo}"> <controls:DataGrid.Columns> <controls:DataGridTextColumn Header="名字" Binding="{Binding Name}"/> <controls:DataGridTextColumn Header="网站" Binding AlternatingRowBackground="LightGray"> <controls:DataGrid.Columns> <controls:DataGridTextColumn Header="名字" Binding="{Binding Name}"/> <controls:DataGridTextColumn Header="网站" Binding
0,0,28,0" > <DataGrid.Columns> <DataGridTextColumn Header="名称" Width="*" Binding="{Binding Name}"/> <DataGridTextColumn Header ="衣服类型" Width="*" Binding="{Binding ClothTpye}"/> <DataGridTextColumn Header ="颜色" Width="*" Binding="{Binding ClothColor}"/> <DataGridTextColumn Header ="尺码" Width="*" Binding="{Binding ClothSize}"/> <DataGridTextColumn Header
写一个比较通用的方法,扩展一个新的格式列DataGridNumericColumn继承DataGridTextColumn,在DataGridNumericColumn类中限制输入,参考代码: public class DataGridNumericColumn : DataGridTextColumn { protected override object PrepareCellForEdit(
Header="编号" Binding="{Binding UserId}" Width="50"/> <DataGridTextColumn > </DataGridTextColumn> Binding SelectedStudent}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="ID" Binding="{Binding Id}"/> <DataGridTextColumn Header="Name" Binding="{Binding Name}"/> <DataGridTextColumn Header="Gender" Binding="{Binding Gender}"/> <DataGridTextColumn
SelectionChanged="dgSourceData_SelectionChanged" > <DataGrid.Columns> <DataGridTextColumn Binding Path=Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" MinWidth="68"/> <DataGridTextColumn Binding Path=Age,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" MinWidth="68"/> <DataGridTextColumn
SelectionChanged="dgSourceData_SelectionChanged" > <DataGrid.Columns> <DataGridTextColumn </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn
AutoGenerateColumns="False" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2"> <data:DataGrid.Columns> <data:DataGridTextColumn Header="F_ID" Binding="{Binding F_ID}" /> <data:DataGridTextColumn Header="F_ClassName " Binding="{Binding F_ClassName}" /> <data:DataGridTextColumn Header="F_RootId" Binding="{Binding F_RootId}" /> <data:DataGridTextColumn Header="F_Depth" Binding=" {Binding F_Depth}" /> <data:DataGridTextColumn Header="F_Type" Binding="{Binding F_Type
False" Margin="0,4" Grid.Row="1" FontSize="16" ItemsSource="{Binding DishMenu}"> <DataGrid.Columns> <DataGridTextColumn Header="菜品" Binding="{Binding Dish.Name}" Width="120" /> <DataGridTextColumn Header="种类" Binding="{Binding Dish.Category}" Width="120" /> <DataGridTextColumn Header="点评" Binding="{Binding Dish.Comment}" Width ="120" /> <DataGridTextColumn Header="推荐分数" Binding="{Binding Dish.Score}" Width="120" /> <DataGridTemplateColumn 在HTML页面里,Binding 用的特别多,例如: <DataGridTextColumn Header="菜品" Binding="{Binding Dish.Name}" Width="120"
"1" Background="LightGray" Margin="10"> <DataGrid.Columns> <DataGridTextColumn Header="姓名" Binding="{Binding 姓名}"/> <DataGridTextColumn Header="年龄" Binding="{Binding
SelectionChanged="dgSourceData_SelectionChanged" > <DataGrid.Columns> <DataGridTextColumn </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn
DataGrid Margin="1" Grid.Row="1"> <DataGrid.Columns> <DataGridTextColumn Width="*" Binding="{Binding UserName}" Header="时间"/> <DataGridTextColumn Width="5*" Binding="{Binding UserAccount}" Header="消息"/> <DataGridTextColumn Width="*" Binding="{Binding UserPasswd}" Header="类型"/> <DataGridTextColumn
通过Localization.Attributes,设置本地化的特性(属性) 如:<DataGridTextColumn x:Uid="DataGridTextColumn_1" Header="No. Content" Value="{DynamicResource HdNo}" /> 4 </Window.Resources> DataGridColumn引用静态的样式资源 1 <DataGridTextColumn