控件是对数据和方法的封装。控件可以有自己的属性、方法和事件。属性是控件数据的简单访问者,方法则是控件的一些简单而可见的功能,事件是可以被控件识别的操作。Silverlight中,控件的特性和控件显示方式分开,控件在用户界面上的样子是由控件模板决定,Silverlight为每个控件提供了默认的控件模板和相应的特性,用户也可用自己的控件模板来替换,让它成为有个性化的控件,如过去方形的按扭,可以换成圆的或椭圆的,或者任意图片等,但按扭的基本属性没有改变。
所有控件由基类System.Windows.Control类派生而来,其命名空间是System.Windows.Controls,System.Windows.Controls命名空间中包含的某些控件用于Silverlight运行时,其它控件用于Silverlight SDK。
◎
按钮/命令控件,如:Button、HyperlinkButton、RepeatButton
◎
日期显示和选择,如:Calendar、DatePicker
◎
对话框和窗口:OpenFileDialog、SaveFileDialog、ChildWindow、Popup
◎
导航:Frame、Page
◎ 布局和元素分组 Border、Canvas、ContentControl、Grid GridSplitter、StackPanel、 ViewBox、VirtualizingStackPanel、ScrollBar、ScrollViewer、TabControl
如安控件的派生关系分,有:面板控件、内容控件、列表控件等。
DataGrid
控件提供一种用户喜爱的、灵活的方式来以表格的形式显示数据,用户可根据自己的需求来定制列的模板,内置列类型包括文本框列、复选框列和模板列,位于命名空间
System.Windows.Controls
下,在
System.Windows.Controls
程序集中,该程序集并不包含在
Silverlight
运行库中,因此需添加对
System.Windows.Controls.Data.Dll
的引用,在
XAML
界面的根标记
UserControl
声明如下:
DataGrid
控件重要属性有:
◎
IsValid
:支持单元格级别的属性验证和行级别的对象验证。如果在属性
setter
中遇到验证异常,则单元格编辑控件将显示其错误状态。
DataGridCell..::.IsValid
、
DataGridRow..::.IsValid
和
DataGrid..::.IsValid
属性都设置为
false
。
DataGrid
将不会退出单元格编辑模式,直到验证错误得以解决。
◎
ItemsSource
:数据网格中的每一行均绑定到数据源中的一个对象,而数据网格中的每一列均绑定到该数据对象的一个属性。当向源数据中添加项或从源数据中移除项时,为了使
DataGrid
用户界面能够自动更新,
DataGrid
必须绑定到实现
INotifyCollectionChanged
的集合,例如
ObservableCollection<(Of <(T>)>)
。为了自动反映属性更改,源集合中的对象必须实现
INotifyPropertyChanged
接口。
◎
AutoGenerateColumns
:属性设置为
false
时
,可以阻止自动生成列。如果要显式创建和配置所有列,则这一点很有用。此外,还可以让数据网格生成列,但处理
AutoGeneratingColumn
事件以便在创建后对列进行自定义。若要重新排列列的显示顺序,可以针对各个列设置
DisplayIndex
属性。
◎CanUserReorderColumns:属性设置为true时,可以拖动该列改变该列的顺序,否则不能拖动。
范例示范使用RowDetailTemplate
图
13.1-6
是
Ch13_Exam1_4
的运行画面,单击某一行后,出现详细信息。
@H_253_404@<UserControl
@H_253_404@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
@H_253_404@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
@H_253_404@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@H_253_404@ xmlns:myheader="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
@H_253_404@x:Class="SilverlightApplication74.MainPage"
@H_253_404@ d:DesignWidth="640" d:DesignHeight="580"
@H_253_404@ xmlns:local="clr-namespace:SilverlightApplication74">
@H_253_404@ <Grid x:Name="LayoutRoot">
@H_253_404@ <StackPanel Margin="10,8,18">
@H_253_404@ <TextBlock Height="51" Margin="179,299,0" Text="热门新车销量表" textwrapping="Wrap" FontSize="32" Foreground="#FFE90D0D"/>
@H_253_404@<data:DataGrid x:Name="gridStudent" Margin="10,10,0" AutoGenerateColumns="False" Width="604" Height="488" HorizontalAlignment="Left" RowDetailsVisibilityMode="VisibleWhenSelected" >
@H_253_404@ <DataTemplate>
@H_253_404@ <Border>
@H_253_404@<Border Margin="10" Padding="10" BorderBrush="SteelBlue" BorderThickness="4" CornerRadius="4">
@H_253_404@ </Border>
@H_253_404@ </Border>
@H_253_404@ </DataTemplate>
@H_253_404@ <data:DataGrid.ColumnHeaderStyle>
@H_253_404@ <Style targettype="myheader:DataGridColumnHeader">
@H_253_404@ <Setter Property="FontSize" Value="18" />
@H_253_404@ <Setter Property="Foreground" Value="Red" />
@H_253_404@ </Style>
@H_253_404@ </data:DataGrid.ColumnHeaderStyle>
@H_253_404@ <data:DataGrid.Columns >
@H_253_404@ FontSize="16"
@H_253_404@ Width="100"
@H_253_404@ Binding="{Binding Name}" >
@H_253_404@ </data:DataGridTextColumn>
@H_253_404@ FontSize="16"
@H_253_404@ Width="100"
@H_253_404@ Binding="{Binding Type}" >
@H_253_404@ </data:DataGridTextColumn>
@H_253_404@ FontSize="16"
@H_253_404@ Width="150"
@H_253_404@ Binding="{Binding Total,Mode=TwoWay}">
@H_253_404@ <data:DataGridTextColumn.ElementStyle>
@H_253_404@ <Style targettype="TextBlock">
@H_253_404@ </Style>
@H_253_404@ </data:DataGridTextColumn.ElementStyle>
@H_253_404@ <data:DataGridTextColumn.EditingElementStyle>
@H_253_404@ <Style targettype="TextBox">
@H_253_404@ <Setter Property="FontWeight" Value="Bold" />
@H_253_404@ <Setter Property="Foreground" Value="Red" />
@H_253_404@ </Style>
@H_253_404@ </data:DataGridTextColumn.EditingElementStyle>
@H_253_404@ </data:DataGridTextColumn>
@H_253_404@ <data:DataGridTemplateColumn.CellTemplate>
@H_253_404@ <DataTemplate>
@H_253_404@ <Image Stretch="UniformToFill" Source ="{Binding Img}" Width="150"/>
@H_253_404@ </DataTemplate>
@H_253_404@ </data:DataGridTemplateColumn.CellTemplate>
@H_253_404@ <data:DataGridTemplateColumn.CellEditingTemplate>
@H_253_404@ <DataTemplate>
@H_253_404@ </DataTemplate>
@H_253_404@ </data:DataGridTemplateColumn.CellEditingTemplate>
@H_253_404@ </data:DataGridTemplateColumn>
@H_253_404@ </data:DataGrid.Columns>
@H_253_404@ </data:DataGrid>
@H_253_404@ </StackPanel>
@H_253_404@ </Grid>
@H_253_404@</UserControl>
◎
主要代码如下:
@H_253_404@ {
@H_253_404@ Img=GetPath("CarPhoto/mingru.jpg"),
@H_253_404@ },
@H_253_404@ },
@H_253_404@ Img=GetPath("CarPhoto/kouluz.jpg"),
@H_253_404@ },
@H_253_404@ },
@H_253_404@ Img=GetPath("CarPhoto/suteng.jpg"),
@H_253_404@ }
@H_253_404@ };
@H_253_404@ }
@H_253_404@ {
@H_253_404@ }
@H_253_404@ }
@H_253_404@ public class Car
@H_253_404@ {
@H_253_404@ public string Img
@H_253_404@ }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。