zoukankan      html  css  js  c++  java
  • 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事件。

  • 相关阅读:
    每日一道 LeetCode (11):外观数列
    每日一道 LeetCode (10):搜索插入位置
    每日一道 LeetCode (9):实现 strStr()
    每日一道 LeetCode (8):删除排序数组中的重复项和移除元素
    每日一道 LeetCode (7):合并两个有序链表
    每日一道 LeetCode (6):有效的括号
    Python 图像处理 OpenCV (16):图像直方图
    每日一道 LeetCode (5):最长公共前缀
    每日一道 LeetCode (4):罗马数字转整数
    每日一道 LeetCode (3):回文数
  • 原文地址:https://www.cnblogs.com/lsxqw2004/p/4627650.html
Copyright © 2011-2022 走看看