一、DataGrid分组
在Silverlight的表格中可能须要对某一些数据进行分组以便利客户查看,我们应用PagedCollectionView凑集作为数据源,然后经由过程设置其GroupDescriptions属性值,添加须要分组的实体凑集属性,重视:若是须要两层分组则添加两个属性即可。
Xaml代码:
<sdk:DataGrid HorizontalAlignment="Left" AutoGenerateColumns="False" Name="ShowCityList"
VerticalAlignment="Top" Height="400" >
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="省会" Binding="{Binding AddrName}" Width="108"/>
<sdk:DataGridTextColumn Header="城市" Binding="{Binding CityName}" IsReadOnly="True" Width="108"/>
<sdk:DataGridTextColumn Header="德律风区号" Binding="{Binding TelNum}" IsReadOnly="True" Width="108"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
Xaml.cs代码如下:
PagedCollectionView view = new PagedCollectionView(CityInfo.GetInfo());
//此处按照AddrName属性分组
view.GroupDescriptions.Add(new PropertyGroupDescription("AddrName"));
//若是须要多重分组,则作废以****释
//view.GroupDescriptions.Add(new PropertyGroupDescription("CityName"));
this.ShowCityList.ItemsSource = view;
实体数据源函数如下:
public static List<CityInfo> GetInfo()
{
var list = new List<CityInfo>();
list.Add(new CityInfo() { AddrName = "北京", CityName = "北京市", TelNum = "010" });
list.Add(new CityInfo() { AddrName = "上海", CityName = "上海市", TelNum = "020" });
list.Add(new CityInfo() { AddrName = "广东", CityName = "广州市", TelNum = "021" });
list.Add(new CityInfo() { AddrName = "广东", CityName = "深圳市", TelNum = "0210" });
list.Add(new CityInfo() { AddrName = "四川", CityName = "成都会", TelNum = "028" });
list.Add(new CityInfo() { AddrName = "四川", CityName = "内江市", TelNum = "0832" });
list.Add(new CityInfo() { AddrName = "四川", CityName = "自贡市", TelNum = "0831" });
return list;
}
结果如下:
二、模仿归并单位格
在本实例中我们经由过程对数据源进行机关,然后在DataGrid控件上设置DataGridTemplateColumn的模板体式格式模仿归并单位格。
Xaml代码:
<sdk:DataGrid HorizontalAlignment="Left" AutoGenerateColumns="False" Name="ShowCity"
VerticalAlignment="Top" Height="400" Margin="400 0 0 0" >
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="省会" Binding="{Binding AddrName}" IsReadOnly="True" Width="108"/>
<sdk:DataGridTemplateColumn Header="城市" Width="108">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding CityNames}"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn Header="德律风区号" Width="108">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding TelNums}" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
Xaml.cs代码:
this.ShowCity.ItemsSource = CityInfo.GetInfoList();
实体数据源函数如下:
public static List<CityInfo> GetInfoList()
{
var list = new List<CityInfo>();
list.Add(new CityInfo() { AddrName = "北京", CityNames = new List<string>() { "北京市" },
TelNums = new List<string>() { "010" } });
list.Add(new CityInfo() { AddrName = "上海", CityNames = new List<string>() { "上海市" },
TelNums = new List<string>() { "020" } });
list.Add(new CityInfo() { AddrName = "广东", CityNames = new List<string>() { "广州市", "深圳市" },
TelNums = new List<string>() { "021","0210" } });
list.Add(new CityInfo() { AddrName = "四川", CityNames = new List<string>() { "成都会", "内江市","自贡市" },
TelNums = new List<string>() { "028","0832","0831" } });
return list;
}
结果如下:
三、实体类如下:
/// <summary>
/// 城市信息的实体类
/// </summary>
public class CityInfo
{
private string _AddrName;
private string _CityName;
private string _TelNum;
public string AddrName
{
get { return _AddrName; }
set { _AddrName = value; }
}
public string CityName
{
get { return _CityName; }
set { _CityName = value; }
}
public string TelNum
{
get { return _TelNum; }
set { _TelNum = value; }
}
private List<string> _CityNames;
public List<string> CityNames
{
get { return _CityNames; }
set { _CityNames = value; }
}
private List<string> _TelNums;
public List<string> TelNums
{
get { return _TelNums; }
set { _TelNums = value; }
}
}
本实例须要引用System.Windows.Data.dll法度集,在学生的脑力劳动中,摆在第一位的并不是背书,不是记住别人的思想,而是让学生本人进行思考,也就是说,进行生动的创造,借助词去认识周围世界的事物和现象,并且与此联系地认识词本身的极其细腻的感情色彩。 ——苏霍姆林斯基给教师的建议
联系客服