微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight DataGrid 模板列操作

Silverlight DataGrid 模板列操作

(2011-02-16 12:19:40)

DataGrid 模板列操作

 

DataGrid在Silverlight中是一个重要的数据控件,功能十分的强大,可以分组显示,可以排序,自定义模板,用的时候也十分的方便。

 

对于怎样拖进DataGrid这个应该都知道了【说明,如果你的页面中没有使用过DataGrid,那么你如果直接用手写代码运行会出现错误,原因就在于你没有注册解决方案十分简单,你只需要在工具栏中拖拽一个DataGrid放进页面删除即可,对于像Tab等一些插件如果遇见错误采用同样方法,其实还是拖拽的简单,系统会自动添加,省着麻烦】

 

接下来我们就要对DataGrid进行操作了,对于添加的列有三种:

DataGridTemplateColumn   (模板列)

DataGridTextColumn       (文本列)

DataGridCheckBoxColumn  (选择列)

 

对于文本列和选择列我们只需要对其进行数据绑定即可,注意一下选择列的数据类型为bool

接下来我们就要学习模板列了。

1 .自定义模板头,我们知道silverlight自带的模板的头式不能够放入checkBoxtextBox等控件的,那么我们如果遇到这样的情况该怎么办呢,例如我们做一个快捷操作的全选,那么我们必须在头上有一个全选的checkBox

看我的实现:

                           <sdk:DataGridTemplateColumn.HeaderStyle>

                                <Style targettype="Primitives:DataGridColumnHeader">

                                    <Setter Property="ContentTemplate">

                                        <Setter.Value>

                                            <DataTemplate>

                                                <StackPanel>

                                                 <CheckBox Content="全选" Name="chkAll"/>

                                                </StackPanel>

                                            </DataTemplate>

                                        </Setter.Value>

                                    </Setter>

                                </Style>

                            </sdk:DataGridTemplateColumn.HeaderStyle>

说明:

     上面的代码就实现了编辑表头的作用,从上面来,我们首先要控制的是头的样式HeaderStyle

接下来我们控制的样式目标类型,我们注意这个地方,我们必须引入以下的命名空间。

xmlns:System="clr-namespace:System;assembly=mscorlib"  xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"

xmlns:System_Windows_Controls_Primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls"

xmlns:Primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"

在往下我们设置模板的属性,接下来就是设置的是值,在下来就是目标模板。

在下面的<StackPanel>则是我们使用的容器,因为在DataTemplate中只能够放一个控件,我们放入一个容器,这样就可以做出更丰富的模板。在里面就是我们要的checkBox了。

 

实现列的内容就更容易了,见下面代码

<sdk:DataGridTemplateColumn.CellEditingTemplate>

                                <DataTemplate>

                                    <CheckBox Name="chkOne"/>

                                </DataTemplate>

                            </sdk:DataGridTemplateColumn.CellEditingTemplate>

这个就不多说了,比那个弄头的简单的多了,并且不用引入上面那堆东西。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐