Siverlight Datagrid样式运用
Page.xaml:代码如下 <UserControl x:Class="SilverlightApplication1.Page" xmlns="http://schemas.microsoft .com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:System.Windows .Controls;assembly=System.Windows.Controls.Data" xmlns:controls="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls" xmlns:primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows" xmlns:localprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data" xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows" xmlns:sys="clr-namespace:System;assembly=mscorlib" Width="500" Height="500" Loaded="UserControl_Loaded" xmlns:d="http://schemas.microsoft.com/expression/blend/2008 " xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <UserControl.Resources> <Style TargetType="localprimitives:DataGridRowHeader" x:Key="MyRowHeader" > <Setter Property="IsTabStop" Value="False" /> <Setter Property="SeparatorBrush" Value="#FFFFFFFF" /> <Setter Property="SeparatorVisibility" Value="Collapsed" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="localprimitives:DataGridRowHeader"> <Grid x:Name="Root"> <vsm:VisualStateManager.VisualStateGroups> <vsm:VisualStateGroup x:Name="CommonStates" > <vsm:VisualStateGroup.Transitions> <vsm:VisualTransition GeneratedDuration="00:00:0.2" /> </vsm:VisualStateGroup.Transitions> <vsm:VisualState x:Name="Normal" /> <vsm:VisualState x:Name="MouseOver"> <Storyboard> <ColorAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" Duration="0" To="#99D5EAF1" /> </Storyboard> </vsm:VisualState> <vsm:VisualState x:Name="MouseOver CurrentRow Selected"> <Storyboard> <ColorAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" Duration="0" To="#FFD5EAF1" /> </Storyboard> </vsm:VisualState> <vsm:VisualState x:Name="Normal Selected"> <Storyboard> <ColorAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" Duration="0" To="#FFD5EAF1" /> </Storyboard> </vsm:VisualState> <vsm:VisualState x:Name="Normal EditingRow"> <Storyboard> <ColorAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" Duration="0" To="#FFD5EAF1" /> </Storyboard> </vsm:VisualState> </vsm:VisualStateGroup> </vsm:VisualStateManager.VisualStateGroups> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Border BorderBrush="#FFFFFFFF" BorderThickness="1, 0, 1, 0" Grid.RowSpan="3" Grid.ColumnSpan="2"> <Rectangle x:Name="BackgroundRectangle" Stretch="Fill" Grid.RowSpan="3" Grid.ColumnSpan="2" Fill="#99E9EEF4" /> </Border> <Rectangle x:Name="HorizontalSeparator" Grid.ColumnSpan="2" Grid.Row="2" Height="1" Margin="1, 0, 1, 0" HorizontalAlignment="Stretch" Fill="{TemplateBinding SeparatorBrush}" Visibility="{TemplateBinding SeparatorVisibility}" /> <ContentPresenter Content="{TemplateBinding Content}" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="1" Grid.RowSpan="2" /> <Path Width="2" Height="10" Margin="8,0,8,0" Grid.RowSpan="2" Stretch="Fill" Opacity="0"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="local:DataGridRow" x:Key="MyCustomRow"> <Setter Property="IsTabStop" Value="False" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="local:DataGridRow"> <localprimitives:DataGridFrozenGrid x:Name="Root"> <localprimitives:DataGridFrozenGrid.Resources> <Storyboard x:Key="DetailsVisibleTransition" > <DoubleAnimation Storyboard.TargetName="DetailsPresenter" Storyboard.TargetProperty="ContentHeight" Duration="00:00:0.1" /> </Storyboard> </localprimitives:DataGridFrozenGrid.Resources> <vsm:VisualStateManager.VisualStateGroups> <vsm:VisualStateGroup x:Name="CommonStates" > <vsm:VisualState x:Name="Normal" /> <vsm:VisualState x:Name="Normal AlternatingRow"> <Storyboard> <DoubleAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="0" /> </Storyboard> </vsm:VisualState> <vsm:VisualState x:Name="MouseOver"> <Storyboard> <DoubleAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To=".5" /> </Storyboard> </vsm:VisualState> <vsm:VisualState x:Name="Normal Selected"> <Storyboard> <DoubleAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="1" /> </Storyboard> </vsm:VisualState> <vsm:VisualState x:Name="MouseOver Selected"> <Storyboard> <DoubleAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="1" /> </Storyboard> </vsm:VisualState> <vsm:VisualState x:Name="Unfocused Selected"> <Storyboard> <DoubleAnimation Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="1" /> <ColorAnimationUsingKeyFrames BeginTime="0" Duration="0" Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"> <SplineColorKeyFrame KeyTime="0" Value="#FFE1E7EC" /> </ColorAnimationUsingKeyFrames> </Storyboard> </vsm:VisualState> </vsm:VisualStateGroup> </vsm:VisualStateManager.VisualStateGroups> <localprimitives:DataGridFrozenGrid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </localprimitives:DataGridFrozenGrid.RowDefinitions> <localprimitives:DataGridFrozenGrid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </localprimitives:DataGridFrozenGrid.ColumnDefinitions> <Rectangle x:Name="BackgroundRectangle" Grid.RowSpan="2" Grid.ColumnSpan="2" Opacity="0" Fill="#FFBADDE9" /> <localprimitives:DataGridRowHeader Grid.RowSpan="3" x:Name="RowHeader" localprimitives:DataGridFrozenGrid.IsFrozen="True" /> <controls:TreeViewItem Margin="0,-3,0,-3" x:Name="DataTreeItme" Background="{x:Null}" HorizontalContentAlignment="Stretch" Grid.Column="0" ItemsSource="{Binding Path=SubPersons}"> <controls:TreeViewItem.Header> <localprimitives:DataGridCellsPresenter x:Name="CellsPresenter" localprimitives:DataGridFrozenGrid.IsFrozen="True"/> </controls:TreeViewItem.Header> <controls:TreeViewItem.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" Tag="{Binding Path=Name}" x:Name="SubItemsPanel"> <local:DataGridCell x:Name="SubName" Width="39" Margin="3,0,0,0" Content="{Binding Path=Name}"/> <local:DataGridCell x:Name="SubAge" Width="42" Margin="3,0,0,0" Content="{Binding Path=Age}"/> <local:DataGridCell x:Name="SubSex" Width="42" Margin="3,0,0,0" Content="{Binding Path=Sex}"/> </StackPanel> </DataTemplate> </controls:TreeViewItem.ItemTemplate> </controls:TreeViewItem> <localprimitives:DataGridDetailsPresenter Grid.Row="1" Grid.Column="1" x:Name="DetailsPresenter" /> <Rectangle Grid.Row="2" Grid.Column="1" x:Name="BottomGridLine" HorizontalAlignment="Stretch" Height="1" /> </localprimitives:DataGridFrozenGrid> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="localprimitives:DataGridColumnHeader" x:Name="MyColumnHeader"> <Setter Property="Foreground" Value="#FF444444" /> <Setter Property="HorizontalContentAlignment" Value="Left" /> <Setter Property="VerticalContentAlignment" Value="Center" /> <Setter Property="FontSize" Value="10.5" /> <Setter Property="FontWeight" Value="Bold" /> <Setter Property="IsTabStop" Value="False" /> <Setter Property="SeparatorBrush" Value="#FFC9CACA" /> <Setter Property="Padding" Value="4" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="localprimitives:DataGridColumnHeader"> <Grid Name="Root"> <vsm:VisualStateManager.VisualStateGroups> <vsm:VisualStateGroup x:Name="CommonStates" > <vsm:VisualStateGroup.Transitions> <vsm:VisualTransition GeneratedDuration="00:00:0.1" /> </vsm:VisualStateGroup.Transitions> <vsm:VisualState x:Name="Normal" /> <vsm:VisualState x:Name="MouseOver"> <Storyboard> <ColorAnimationUsingKeyFrames BeginTime="0" Duration="0" Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"> <SplineColorKeyFrame KeyTime="0" Value="#FF448DCA" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames BeginTime="0" Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)"> <SplineColorKeyFrame KeyTime="0" Value="#7FFFFFFF" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames BeginTime="0" Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)"> <SplineColorKeyFrame KeyTime="0" Value="#CCFFFFFF" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames BeginTime="0" Duration="0" Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)"> <SplineColorKeyFrame KeyTime="0" Value="#F2FFFFFF" /> </ColorAnimationUsingKeyFrames> </Storyboard> </vsm:VisualState> <vsm:VisualState x:Name="Pressed"> <Storyboard> <ColorAnimationUsingKeyFrames Storyboard.TargetName="BackgroundRectangle" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"> <SplineColorKeyFrame KeyTime="0" Value="#FF448DCA" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)"> <SplineColorKeyFrame KeyTime="0" Value="#D8FFFFFF" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)"> <SplineColorKeyFrame KeyTime="0" Value="#C6FFFFFF" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Color)"> <SplineColorKeyFrame KeyTime="0" Value="#8CFFFFFF" /> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetName="BackgroundGradient" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)"> <SplineColorKeyFrame KeyTime="0" Value="#3FFFFFFF" /> </ColorAnimationUsingKeyFrames> </Storyboard> </vsm:VisualState> </vsm:VisualStateGroup> <vsm:VisualStateGroup x:Name="SortStates" > <vsm:VisualStateGroup.Transitions> <vsm:VisualTransition GeneratedDuration="00:00:0.1" /> </vsm:VisualStateGroup.Transitions> <vsm:VisualState x:Name="Unsorted" /> <vsm:VisualState x:Name="SortAscending"> <Storyboard> <DoubleAnimation Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="Opacity" Duration="0" To="1.0" /> </Storyboard> </vsm:VisualState> <vsm:VisualState x:Name="SortDescending"> <Storyboard> <DoubleAnimation Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="Opacity" Duration="0" To="1.0" /> <DoubleAnimation Storyboard.TargetName="SortIcon" Storyboard.TargetProperty="(Path.RenderTransform).(ScaleTransform.ScaleY)" Duration="0" To="-.9" /> </Storyboard> </vsm:VisualState> </vsm:VisualStateGroup> </vsm:VisualStateManager.VisualStateGroups> <Grid.ColumnDefinitions> <ColumnDefinition x:Name="ColumnHeader" Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Rectangle x:Name="BackgroundRectangle" Stretch="Fill" Fill="#FF1F3B53" Grid.ColumnSpan="2" /> <Rectangle x:Name="BackgroundGradient" Stretch="Fill" Grid.ColumnSpan="2" > <Rectangle.Fill> <LinearGradientBrush StartPoint=".7,0" EndPoint=".7,1"> <GradientStop Color="#FFFFFFFF" Offset="0.015" /> <GradientStop Color="#F9FFFFFF" Offset="0.375" /> <GradientStop Color="#E5FFFFFF" Offset="0.6" /> <GradientStop Color="#C6FFFFFF" Offset="1" /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> <Grid HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <ContentPresenter Content="{TemplateBinding Content}" Cursor="{TemplateBinding Cursor}" /> <Path Grid.Column="1" Name="SortIcon" Fill="#FF444444" RenderTransformOrigin=".5,.5" HorizontalAlignment="Left" VerticalAlignment="Center" Opacity="0" Stretch="Uniform" Width="8" Margin="4,0,0,0" Data="F1 M -5.215,6.099L 5.215,6.099L 0,0L -5.215,6.099 Z "> <Path.RenderTransform> <ScaleTransform ScaleX=".9" ScaleY=".9" /> </Path.RenderTransform> </Path> </Grid> <Rectangle Name="VerticalSeparator" Grid.Column="1" Width="1" VerticalAlignment="Stretch" Fill="{TemplateBinding SeparatorBrush}" Visibility="{TemplateBinding SeparatorVisibility}" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> <ControlTemplate TargetType="local:DataGrid" x:Name="DataGridTemplate"> <Border BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="2"> <Grid x:Name="Root" Background="{TemplateBinding Background}"> <Grid.Resources> <!--Start: TopLeftHeaderTemplate--> <ControlTemplate x:Key="TopLeftHeaderTemplate" TargetType="localprimitives:DataGridColumnHeader"> <Grid x:Name="Root"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Border BorderThickness="0,0,1,0" BorderBrush="#FFDFE3E6" Background="#FF1F3B53" Grid.RowSpan="2"> <Rectangle Stretch="Fill" StrokeThickness="1"> <Rectangle.Fill> <LinearGradientBrush StartPoint=".7,0" EndPoint=".7,1"> <GradientStop Color="#FFFFFFFF" Offset="0.015" /> <GradientStop Color="#F9FFFFFF" Offset="0.375" /> <GradientStop Color="#E5FFFFFF" Offset="0.6" /> <GradientStop Color="#C6FFFFFF" Offset="1" /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> </Border> <Rectangle VerticalAlignment="Bottom" Width="Auto" StrokeThickness="1" Height="1" Fill="#FFDBDCDC" Grid.RowSpan="2"/> </Grid> </ControlTemplate> <!--End: TopLeftHeaderTemplate--> <!--Start: TopRightHeaderTemplate--> <ControlTemplate x:Key="TopRightHeaderTemplate" TargetType="localprimitives:DataGridColumnHeader"> <Grid x:Name="RootElement"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Border BorderThickness="0,1,0,0" BorderBrush="#FFDFE3E6" Background="#FF1F3B53" Grid.RowSpan="2"> <Rectangle Stretch="Fill"> <Rectangle.Fill> <LinearGradientBrush StartPoint=".7,0" EndPoint=".7,1"> <GradientStop Color="#FFFFFFFF" Offset="0.015" /> <GradientStop Color="#F9FFFFFF" Offset="0.375" /> <GradientStop Color="#E5FFFFFF" Offset="0.6" /> <GradientStop Color="#C6FFFFFF" Offset="1" /> </LinearGradientBrush> </Rectangle.Fill> </Rectangle> </Border> <Rectangle HorizontalAlignment="Left" Width="1" StrokeThickness="1" Height="Auto" Fill="#FFDFE3E6" Grid.RowSpan="2"/> </Grid> </ControlTemplate> <!--End: TopRightHeaderTemplate--> </Grid.Resources> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <!-- Row 0 --> <localprimitives:DataGridColumnHeader x:Name="TopLeftCornerHeader" Template="{StaticResource TopLeftHeaderTemplate}" Width="22" /> <localprimitives:DataGridColumnHeadersPresenter x:Name="ColumnHeadersPresenter" Grid.Column="1"/> <localprimitives:DataGridColumnHeader x:Name="TopRightCornerHeader" Grid.Column="2" Template="{StaticResource TopRightHeaderTemplate}" /> <Rectangle x:Name="ColumnHeadersAndRowsSeparator" Grid.ColumnSpan="3" VerticalAlignment="Bottom" Width="Auto" StrokeThickness="1" Height="1" Fill="#FFDBDCDC"/> <!-- Row 1 --> <controls:TreeViewItem x:Name="DataItem" Margin="0,0,0,0" Grid.ColumnSpan="2" Grid.Row="1" ItemsSource="{Binding Path=SubPersons}"> <controls:TreeViewItem.Header> <localprimitives:DataGridRowsPresenter x:Name="RowsPresenter" /> </controls:TreeViewItem.Header> <controls:TreeViewItem> <controls:TreeViewItem.Header> <TextBlock Text="Test"/> </controls:TreeViewItem.Header> </controls:TreeViewItem> </controls:TreeViewItem> <ScrollBar x:Name="VerticalScrollbar" Orientation="Vertical" Grid.Column="2" Grid.Row="1" Width="18" /> <!-- Row 2 --> <Rectangle x:Name="BottomLeftCorner" Fill="#FFE9EEF4" Grid.Row="2" Grid.ColumnSpan="2" /> <Grid Grid.Column="1" Grid.Row="2"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Rectangle x:Name="FrozenColumnScrollBarSpacer" /> <ScrollBar x:Name="HorizontalScrollbar" Grid.Column="1" Orientation="Horizontal" Height="18" /> </Grid> <Rectangle x:Name="BottomRightCorner" Fill="#FFE9EEF4" Grid.Column="2" Grid.Row="2" /> </Grid> </Border> </ControlTemplate> </UserControl.Resources> <Grid x:Name="LayoutRoot" Background="White"> <Grid.ColumnDefinitions> <ColumnDefinition Width="250"/> <ColumnDefinition Width="250"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="20" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <local:DataGrid AutoGenerateColumns="False" HorizontalContentAlignment="Stretch" HeadersVisibility="All" VerticalContentAlignment="Stretch" x:Name="dgList" IsReadOnly="True" GridLinesVisibility="All" Background="WhiteSmoke" RowStyle="{StaticResource MyCustomRow}" RowHeaderStyle="{StaticResource MyRowHeader}" ColumnHeaderStyle="{StaticResource MyColumnHeader}" Grid.Row="1"> <local:DataGrid.Columns> <local:DataGridTextColumn x:Name="Col1" Header="Name" Binding="{Binding Path=Name}"/> <local:DataGridTextColumn x:Name="Col2" Header="Age" Binding="{Binding Path=Age}" /> <local:DataGridTextColumn x:Name="Col3" Header="Sex" Binding="{Binding Path=Sex}" /> </local:DataGrid.Columns> </local:DataGrid> </Grid> </UserControl> Page.xaml.cs: 后台代码如下 using System; using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Windows.Browser; using System.Windows.Controls.Primitives; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Linq; using System.Collections.ObjectModel; using Microsoft.Windows.Controls; using System.Windows.Data; using System.Windows.Shapes; namespace SilverlightApplication1 { public partial class Page : UserControl { IEnumerable datas; public Page() { InitializeComponent(); } private void UserControl_Loaded(object sender, RoutedEventArgs e) { datas = GenerateData(); dgList.ItemsSource = datas; } private List GenerateData() { List PersonsData = new List(); Person p; for (int i = 1; i <= 10; i++) { p = new Person(i); p.Name = "name" + i.ToString(); p.Sex = "male"; p.Age = i; PersonsData.Add(p); } return PersonsData; } } } Person.cs: using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Windows.Markup; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; namespace SilverlightApplication1 { public class Person { public List SubPersons { get; private set; } public Person() { } public Person(int i) { SubPersons = new List(); Person p = new Person(); p.Name = "sub"+i+"_John"; p.Age = 12; p.Sex = "male"; SubPersons.Add(p); p = new Person(); p.Name = "sub" + i + "_Mary"; p.Age = 18; p.Sex = "female"; SubPersons.Add(p); p = new Person(); p.Name = "sub" + i + "_Leda"; p.Age = 19; p.Sex = "female"; SubPersons.Add(p); } public string Name { get; set; } public int Age { get; set; } public string Sex { get; set; } } } |