Silverlight中DataGrid的用法

来源:互联网 发布:双十一护肤品数据 编辑:程序博客网 时间:2024/05/16 15:53

1、 数据绑定:grdLbs.ItemsSource=数据集合对象

2、 普通绑定列

<data:DataGrid.Columns>

     <data:DataGridTextColumnHeader="名称"Binding="{Binding Mc}" /> 

</data:DataGrid.Columns>

3、 模板列:  不知道为啥套这么多层,为了保暖? >_<

              <data:DataGridTemplateColumn Header="图片" CanUserResize="False">
                   <data:DataGridTemplateColumn.CellTemplate>
                       <DataTemplate>
                           <StackPanel Orientation="Horizontal"VerticalAlignment="Center">
                                   <Image x:Name="imgLogo" Source="../{BindingPicturePath}" ></Image>
                           </StackPanel>
                       </DataTemplate>
                   </data:DataGridTemplateColumn.CellTemplate>
               </data:DataGridTemplateColumn>

在LoadingRow事件中,获取其中的图片控件:

          Image img =grdLbs.Columns[3].GetCellContent(e.Row).FindName("imgLogo") as Image;(图片所在的模板列在第4列时,列序号时3)

如果是获取选中行的图片控件:

         Image img = grdLbs.Columns[3].GetCellContent(grdLbs.SelectedItem).FindName("imgLogo")as Image;

4、 LoadingRow事件

生成行时触发。和普通的GRID不同,SilverLight里的行只在显示时才生成,没显示出来的(需要滚动条显示的),不会生成,滚动隐藏再次显示时,会重新生成。这种特性可能会造成显示的效果和预计的不一样,要略加注意。

同时,如果新生成的行不是DataGrid最后一行的话,则新行的GetIndex会与其下方相邻行的GetIndex返回值相同。WPF会在LoadingRow事件之后再去调整新行下方各行的Index。

5、 DataGridRow,即行对象

不像普通的GRID,SilverLight里没有很直观的行集合(因为显示不到的行可能没有生成,或者被销毁了)。在LoadingRow事件里,通过其参数,是唯一获取该DataGridRow对象的途径。

6、 遍历单元格

SilverLight遍历单元格的方式,先取得列对象,然后通过其GetCellContent()方法取某行的单元格。该方法的参数是DataGridRow,或者绑定数据源中的某条数据, 返回值是代表单元格的FrameworkElement对象。 该对象的FindName()方法,用于取得模板列中的控件。

7、 SelectionChanged也是较常用的事件。

grdLbs.SelectedItem是选中行相关的实体数据源对象。       Bas_CpLb lb = (Bas_CpLb)grdLbs.SelectedItem;

8、 模板列中的按钮

和外面的按钮一样,可以使用Click事件,而相关的参数,可以通过Tag属性传递使用。

<Button x:Name="btnUp" Content="置顶"Click="btnUp_Click" Tag="{Binding ID}"></Button>

 

原创粉丝点击