Silverlight中GridView主从明细显示

结构图示:

image

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.Collections.Generic;

namespace SilverlightApplication1
{
    public class Person
    {
        public int Personid { get; set; }
        public string PersonName { get; set; }
        public string DepartName { get; set; }
        public string City { get; set; }
        public string email { get; set; }
        public List<Person> GetPersons()
        {
            List<Person> allPersons = new List<Person>();
            allPersons.Add(
                new Person { Personid = 1, PersonName = "Jon1", DepartName = "It", City = "Beijing", email = "Jon1@hotmail.com" }
                );
            allPersons.Add(
                new Person { Personid = 2, PersonName = "Jon2", DepartName = "It", City = "Beijing", email = "Jon2@hotmail.com" }
                );
            allPersons.Add(
                new Person { Personid = 3, PersonName = "Jon3", DepartName = "It", City = "Beijing", email = "Jon3@hotmail.com" }
                );
            allPersons.Add(
                new Person { Personid = 4, PersonName = "Jon4", DepartName = "It", City = "Beijing", email = "Jon4@hotmail.com" }
                );
            return allPersons;
        }
    }
}

Views/Page1.xaml

<navigation:Page x:Class="SilverlightApplication1.Views.Page1" 
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
           mc:Ignorable="d"
           xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
           d:DesignWidth="640" d:DesignHeight="480"
           Title="Page1 Page" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data">
    <Grid x:Name="LayoutRoot">
        <data:DataGrid x:Name="dgperson" AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" 
                      RowDetailsVisibilityMode="VisibleWhenSelected" ScrollViewer.VerticalScrollBarVisibility="Auto" VerticalAlignment="Top" Width="360" Margin="12,12,0,0" >
            <data:DataGrid.Columns>
                <data:DataGridTextColumn Header="Personid" Binding="{Binding Personid}"/>
                <data:DataGridTextColumn Header="PersonName" Binding="{Binding PersonName}"/>
            </data:DataGrid.Columns>
            <data:DataGrid.RowDetailsTemplate>
                <DataTemplate>
                    <Border BorderBrush="Black"  
                            BorderThickness="1" Background="White">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="0.2*" />
                                <ColumnDefinition Width="0.8*" />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition />
                                <RowDefinition />
                                <RowDefinition />
                                <RowDefinition />
                            </Grid.RowDefinitions>
                            <TextBlock Text="DepartName:"  
                                       Grid.Column="0" Grid.Row="0" />
                            <TextBlock Text="{Binding DepartName}"  
                                       Grid.Column="1" Grid.Row="0" />
                            <TextBlock Text="City : "  
                                       Grid.Column="0" Grid.Row="1" />
                            <TextBlock Text="{Binding City}"  
                                       Grid.Column="1" Grid.Row="1" />
                            <TextBlock Text="email : "  
                                       Grid.Column="0" Grid.Row="2" />
                            <TextBlock Text="{Binding email}"  
                                       Grid.Column="1" Grid.Row="2" />

                        </Grid>
                    </Border>
                </DataTemplate>
            </data:DataGrid.RowDetailsTemplate>
        </data:DataGrid>
    </Grid>
</navigation:Page>

Views/Page1.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;

namespace SilverlightApplication1.Views
{
    public partial class Page1 : Page
    {
        public Page1()
        {
            InitializeComponent();
            Person ps = new Person();
            this.dgperson.ItemsSource = ps.GetPersons();
        }

        // 当用户导航到此页面时执行。
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }

    }
}

运行效果图:

image

posted @ 2011-03-07 16:43  Jon.Zhiwei@hotmail.com  Views(1152)  Comments(1)    收藏  举报