> </DataGridTemplateColumn.HeaderTemplate> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock > </DataGridTemplateColumn> <DataGridTemplateColumn Width="150" > <DataGridTemplateColumn.HeaderTemplate > <DataTemplate> <TextBlock Text="B"/> </DataTemplate> </DataGridTemplateColumn.HeaderTemplate> <DataGridTemplateColumn.CellTemplate > </DataGridTemplateColumn> <DataGridTemplateColumn Width="150" > <DataGridTemplateColumn.HeaderTemplate > </DataGridTemplateColumn.HeaderTemplate> 然后是列的单元格模板: <DataGridTemplateColumn.CellTemplate> <DataTemplate
今天有个功能需要在网格中输入时间,本来是用文本框的,但是客户说不知道格式,要求用选择的形式,好像silverlight又没有能选择时间的控件,谷歌下得到一个曲线救国的答案,记录下 1 <sdk:DataGridTemplateColumn Header="起始日期"> 2 3 <sdk:DataGridTemplateColumn.CellTemplate> 4 <DataTemplate> 5 <TextBlock Text="{Binding SellBegin}" /> 6 </DataTemplate> 7 </sdk:DataGridTemplateColumn.CellTemplate > 8 9 <sdk:DataGridTemplateColumn.CellEditingTemplate> 10 <DataTemplate> 11 > 14 15 </sdk:DataGridTemplateColumn> 能显示时间,但是还是不能选择到时间,时间部分需要手输,而且在编辑状态看不到,已有找到更好的办法再更新
> </sdk:DataGridTemplateColumn> <sdk:DataGridTemplateColumn Header=" 工资" Width="100"> <sdk:DataGridTemplateColumn.CellTemplate> > </sdk:DataGridTemplateColumn> <sdk:DataGridTemplateColumn Header= > </sdk:DataGridTemplateColumn> <sdk:DataGridTemplateColumn Header=" > </sdk:DataGridTemplateColumn> <sdk:DataGridTemplateColumn Header=
Header="姓名"> <sdk:DataGridTemplateColumn.CellTemplate> < > </sdk:DataGridTemplateColumn> <sdk:DataGridTemplateColumn Header=" 工资"> <sdk:DataGridTemplateColumn.CellTemplate> <DataTemplate > </sdk:DataGridTemplateColumn> <sdk:DataGridTemplateColumn Header= "操作"> <sdk:DataGridTemplateColumn.CellTemplate> <DataTemplate
<DataGridTextColumn Header="Property2" Binding="{Binding Property2}"/> <DataGridTemplateColumn Header="Total"> <DataGridTemplateColumn.CellTemplate> <DataTemplate </TextBlock> </DataTemplate> </DataGridTemplateColumn.CellTemplate > </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> < DataGridTextColumn Header="Property1" Binding="{Binding Property1}" 可以拿到数值,但是在MultiBinding没有拿到数值,因为他在DataTemplate而DataGridTemplateColumn
最终的实现方法是自定义一个包含DataGrid的DataGridTemplateColumn,而不需要重写DataGrid,这样的坏处就是每次调用需要多写一局代码,如果不想这样就继承DataGrid然后把这句代码写进去 创建一个UserControl然后把它改成DataGridTemplateColumn,这样好处是DataTemplate和Style中的FrameworkElement都可以轻松地获取。 <sdk:DataGridTemplateColumn xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" > <sdk:DataGridTemplateColumn.CellTemplate> <DataTemplate> <CheckBox IsChecked > </sdk:DataGridTemplateColumn> public partial class DataGridSelectColumn : DataGridTemplateColumn
<DataGridTextColumn Header="Name" Binding="{ Binding Path=Name}" MinWidth="68"/> <DataGridTemplateColumn Header="Age" MinWidth="68" > <DataGridTemplateColumn.CellTemplate> StaticResource ShowColorConverter}}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate > </DataGridTemplateColumn> <DataGridTextColumn Header="Id" Binding=
<DataGridTextColumn Header="Name" Binding="{ Binding Path=Name}" MinWidth="68"/> <DataGridTemplateColumn Header="Age" MinWidth="68" > <DataGridTemplateColumn.CellTemplate> StaticResource ShowColorConverter}}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate > </DataGridTemplateColumn> <DataGridTextColumn Header="Id" Binding=
<DataGridComboBoxColumn Header="我是下拉框"/> <DataGridHyperlinkColumn Header="我是超链接"/> <DataGridTemplateColumn Header="我是自定义列" Width="1*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate > <Button Content=""/> </DataTemplate> </DataGridTemplateColumn.CellTemplate > </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> 该控件同样是使用ItemsSource来绑定数据, 我们使用该控件时要先通过DataGrid.Columns来定义列的数量及类型,微软已经为我们定义了上述代码中所示的文本,选择框,下拉框,超链接四个常用列类型,根据业务需求,我们也可以通过DataGridTemplateColumn
} return wpfBitmap; } ⑥datagrid添加RadioButton并实现互斥 <DataGridTemplateColumn Header="Radio" MinWidth="50"> <DataGridTemplateColumn.CellTemplate> Binding RadioEnabled}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate > </DataGridTemplateColumn> 02 — 操作演示 03 — 结尾 项目源码网盘下载地址 链接:https://pan.baidu.com
前言 在UWP中DataTemplate是一个十分重要的功能,并且几乎无处不在,例如DataGrid中的DataGridTemplateColumn: <controls:DataGridTemplateColumn.CellTemplate <TextBlock Text="{x:Bind LastName}" /> </StackPanel> </DataTemplate> </controls:DataGridTemplateColumn.CellTemplate
前言 在UWP中DataTemplate是一个十分重要的功能,并且几乎无处不在,例如DataGrid中的DataGridTemplateColumn: <controls:DataGridTemplateColumn.CellTemplate <TextBlock Text="{x:Bind LastName}" /> </StackPanel> </DataTemplate> </controls:DataGridTemplateColumn.CellTemplate
—添加模板列--> <c1:DataGridTemplateColumn Header="Flavor" FilterMemberPath="FlavorName"> <c1:DataGridTemplateColumn.CellTemplate > <DataTemplate> <TextBlock Text="{Binding FlavorName}" /> </DataTemplate> </c1:DataGridTemplateColumn.CellTemplate —添加多值过滤器--> <c1:DataGridTemplateColumn.Filter> <c1:DataGridContentFilter > <c1:DataGridMultiValueFilter " DisplayMemberPath="FlavorName" ValueMemberPath="FlavorName" /> </c1:DataGridContentFilter> </c1:DataGridTemplateColumn.Filter > </c1:DataGridTemplateColumn> <!
DataGridTextColumn Header="价格" Width="*" Binding="{Binding ClothPrice}"/> <DataGridTemplateColumn Header="操作" Width="50"> <DataGridTemplateColumn.CellTemplate> </StackPanel> </DataTemplate> </DataGridTemplateColumn.CellTemplate > </DataGridTemplateColumn> </DataGrid.Columns>
<DataGridTextColumn Header="性别" Binding="{Binding Sex}" Width="*" /> 16 <DataGridTemplateColumn Header="电话" Width="*"> 17 <DataGridTemplateColumn.CellTemplate> 18 > 26 </DataGridTemplateColumn> 27 <DataGridTemplateColumn Header="删除" Width="*"> 28 <DataGridTemplateColumn.CellTemplate> 29 < > 33 </DataGridTemplateColumn> 34 </DataGrid.Columns> 35 </DataGrid
Header="年龄" Width="50" > <DataGridTemplateColumn.CellTemplate </DataTemplate> </DataGridTemplateColumn.CellTemplate > <DataGridTemplateColumn.CellEditingTemplate> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate > </DataGridTemplateColumn> </DataGrid.Columns>
Dish.Comment}" Width="120" /> <DataGridTextColumn Header="推荐分数" Binding="{Binding Dish.Score}" Width="120" /> <DataGridTemplateColumn Header="选中" SortMemberPath="IsSelected" Width="120"> <DataGridTemplateColumn.CellTemplate> <DataTemplate RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate > </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> <StackPanel Orientation="Horizontal" HorizontalAlignment
如果直接在DataGridComboBoxColumn上使用ItemsSource会发现没有作用,有几种解决方式,一种就是不要使用DataGridComboBoxColumn,使用DataGridTemplateColumn
73 set { lineHeight = value; } 74 } 75 #endregion 76 public DataGridTemplateColumn GetMultiHeadersColumn(NTree<IDataGridHeader> node) 77 { 78 DataGridTemplateColumn col.HeaderStyle = GetStyle("NameHeaderStyle", node); 80 return col; 81 } 82 DataGridTemplateColumn DataTemplate template = (DataTemplate)XamlReader.Load(strtemplate); 94 95 DataGridTemplateColumn colunm = new DataGridTemplateColumn(); 96 colunm.CellTemplate = template; 97 98
最后来看 DataGrid 表格的列集合,每列都是 DataGridTemplateColumn 类型。