WPF,Silverlight与XAML读书笔记第二十九 - 控件之十一 – 高级控件

这部分介绍的控件都是一些组合的高级控件,有些当初位于Control Tookits中,后来被移动到主框架。本文中我们将学习这其中一些常用的。

 

DataGrid控件(Silverlight 2.0)

DataGrid控件类似于电子表格,用来展示行列型的数据。另外可以将这个控件绑定到数据源。在实际中我们常用到如下属性:

  • Name(x:Name):通过这个属性可以给DataGrid控件指定一个名称
  • AutoGenerateColumns:在DataGrid绑定到数据的时候会自动生成需要的行和列
  • SelectMode属性:DataGrid有两种选择模式:单选模式与多种模式,前者一次选择一行数据,后者可以通过按住Ctrl或Shift键来选择多行。将该属性设置为DataGridSelectionMode.Single时DataGrid是单选模式,设置为DataGridSelectionMode.Extended为多选模式。
  • SelectedItem:该属性包含当前DataGrid中被选择的项,在单选模式下,该属性返回object类型的对象,在使用之前需要使用as运算符将其转换为正确的类型。在多选模式下,该属性为System.Collections.Ilist类型的集合,可以遍历这个集合得到想要的项。
  • RowBackground/AlternatingRowBack:通过设置这两个属性,可以让DataGrid获得有交替背景色的行。这两个属性都接受SolidColorBrush类型的对象。
  • DisplayIndex:默认情况下DataGrid中列的显示顺序为源对象中属性声明的顺序,通过DisplayIndex属性我们可以自定义列的前后顺序。这个属性实际上是DataGrid的Columns属性的一个属性,所以我们需要使用如下方式来设置:

    datagridObj.Column[1].DisplayIndex = 0;

    以上代码实现了让默认状态下第二列显示在首列位置。

     

另外如之前介绍过的诸多控件,DataGrid也允许通过数据模板来自定义表格中数据显示的方式,通过下面一段简单的代码来了解这个特性:

 1 <my:DataGrid x:Name="GrdHeadline" AutoGenerateColumns="True">
 2     <my:DataGrid.Columns>
 3         <my:DataGridTemplateColumn>
 4             <my:DataGridTemplateColumn.CellTemplate>
 5                 <DataTemplate>
 6                     <StackPanel Orientation="Vertical">
 7                         <TextBlock Text="123"></TextBlock>
 8                         <TextBlock Text="{Binding strHead}"></TextBlock>
 9                         <TextBlock Text="{Binding strPubDate}"></TextBlock>
10                     </StackPanel>
11                 </DataTemplate>
12             </my:DataGridTemplateColumn.CellTemplate>
13         </my:DataGridTemplateColumn>
14 
15         <my:DataGridTemplateColumn>
16             <my:DataGridTemplateColumn.CellTemplate>
17                 <DataTemplate>
18                         <TextBlock Text="{Binding strLine}"></TextBlock>
19                 </DataTemplate>
20             </my:DataGridTemplateColumn.CellTemplate>
21         </my:DataGridTemplateColumn>
22     </my:DataGrid.Columns>
23 </my:DataGrid>

具体数据模板的XAML语法不再赘述,这里我们通过my:引入了DataGrid控件所在的命名空间,这是通过根元素中如下代码实现的:xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"

 

Calendar控件(Silverlight 2.0)

    日历控件可以用来显示指定月份的日子或指定年份的月,日历控件中提供了两个箭头来在月份或年份之间进行切换。默认情况下渲染的Calendar控件以月视图方式展示,并高亮显示当天日期。该控件中比较有用的属性:

DisplayDate属性:如果需要自定义高亮某个日期,而不是默认高亮显示当天日期,可以使用这个属性指定。

SelectedData属性:当没有任何日期被选中时,该属性返回null,否则返回DateTime类型的对象。也可以通过这个属性设置控件中选中的日期。

BlackoutDates属性:这个属性用来设置不可选择的日子,其使设置的日期(段)变为灰色来表示这段时间不可选择。这个属性为CalendarDateRangeCollection类型,可以像其中加入时间段。

SelectableDateStart和SelectableDateEnd属性:这两个组合使用的属性用来设置想要在控件中显示的一段时间。

 

DatePicker控件(Silverlight 2.0)

    DataPicker是文本框与Calendar控件的结合体,其显示为一个文本框,可以直接输入日期或在点击文本框时弹出的下拉框中选择日期。在选择一个日期后这个小控件会关闭,在选择日期的控件弹出与关闭过程中会分别触发CalendarOpened与CalendarClosed事件。另外如果直接输入的日期格式有错误会触发TextParseError事件。

posted @ 2012-09-18 17:25  hystar  阅读(257)  评论(2编辑  收藏  举报