0.使用MiroModes框架请先阅读http://blogs.telerik.com/blogs/posts/10-01-20/micromodels_for_silverlight.aspx
1.首先定义模型
public class Division { public int Id { get; set; } public string Name { get; set; } public List<Team> Teams { get; set; } }
public class Team { public int Id { get; set; } public string Name { get; set; } public int Place { get; set; } }
public class DivisionsService { public static ObservableCollection<Division> GetDivisions() { ObservableCollection<Division> divisions = new ObservableCollection<Division>(); Division dA = new Division(); dA.Name = "Division A"; dA.Id = 1; dA.Teams = new List<Team>(); Team team1 = new Team(); team1.Id = 1; team1.Name = "Team I"; team1.Place = 1; dA.Teams.Add(team1); Team team2 = new Team(); team2.Id = 2; team2.Name = "Team II"; team2.Place = 2; dA.Teams.Add(team2); Team team3 = new Team(); team3.Id = 3; team3.Name = "Team III"; team3.Place = 3; dA.Teams.Add(team3); divisions.Add(dA); Division dB = new Division(); dB.Name = "Division B"; dB.Id = 2; dB.Teams = new List<Team>(); Team teamRed = new Team(); teamRed.Id = 1; teamRed.Name = "Team Red"; teamRed.Place = 1; dB.Teams.Add(teamRed); Team teamGreen = new Team(); teamGreen.Id = 2; teamGreen.Name = "Team Green"; teamGreen.Place = 2; dB.Teams.Add(teamGreen); Team teamBlue = new Team(); teamBlue.Id = 3; teamBlue.Name = "Team Blue"; teamBlue.Place = 3; dB.Teams.Add(teamBlue); divisions.Add(dB); Division dC = new Division(); dC.Name = "Division C"; dC.Id = 3; dC.Teams = new List<Team>(); Team teamAlpha = new Team(); teamAlpha.Id = 1; teamAlpha.Name = "Team Alpha"; teamAlpha.Place = 1; dC.Teams.Add(teamAlpha); Team teamBeta = new Team(); teamBeta.Id = 2; teamBeta.Name = "Team Beta"; teamBeta.Place = 2; dC.Teams.Add(teamBeta); Team teamGama = new Team(); teamGama.Id = 3; teamGama.Name = "Team Gama"; teamGama.Place = 3; dC.Teams.Add(teamGama); divisions.Add(dC); return divisions; } }
3.定义viewmodel
public class viewmodel : MicroModel { public viewmodel(ObservableCollection<Division> divisions) { //AllProperties(order); Collection("LineItems",() => divisions); //.Each((item,model) => model.Property("Linetotal",() => item.UnitPrice * item.Quantity)); //Command("Save",() => orderService.Save(order,lineItems)); } }
4.定义view
<Grid x:Name="LayoutRoot" DataContext="{Binding Object}"> <telerik:RadGridView AutoGenerateColumns="False" x:Name="HierarchicalGridView" ItemsSource="{Binding Path=LineItems}"> <telerik:RadGridView.ChildTableDeFinitions> <telerik:GridViewTableDeFinition> <telerik:GridViewTableDeFinition.Relation> <telerik:PropertyRelation ParentPropertyName="Teams" /> </telerik:GridViewTableDeFinition.Relation> </telerik:GridViewTableDeFinition> </telerik:RadGridView.ChildTableDeFinitions> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn Header="Id"> <telerik:GridViewColumn.CellTemplate> <DataTemplate> <Grid DataContext="{Binding Object}" > <Grid.ColumnDeFinitions> <ColumnDeFinition Width="80" /> </Grid.ColumnDeFinitions> <TextBlock Margin="1" Grid.Column="0" Text="{Binding Path=Id}" /> </Grid> </DataTemplate> </telerik:GridViewColumn.CellTemplate> </telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Name"> <telerik:GridViewColumn.CellTemplate> <DataTemplate> <Grid DataContext="{Binding Object}" > <Grid.ColumnDeFinitions> <ColumnDeFinition Width="80" /> </Grid.ColumnDeFinitions> <TextBlock Margin="1" Grid.Column="0" Text="{Binding Path=Name}" /> </Grid> </DataTemplate> </telerik:GridViewColumn.CellTemplate> </telerik:GridViewDataColumn> </telerik:RadGridView.Columns> </telerik:RadGridView>
完成,显示效果为:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。