这部分介绍的控件都是一些组合的高级控件,有些当初位于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事件。