Silverlight数据绑定之DataGrid
生活随笔
收集整理的這篇文章主要介紹了
Silverlight数据绑定之DataGrid
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Silverlight數據綁定之DataGrid
時間:2011-08-03 01:59來源:網易博客?作者:Wilson.?點擊:次 注:所有代碼以C#為例 DataGrid綁定的數據對象: 1、DataGrid的ItemsSource數據必須是對象List 2、DataGrid Column的Binding必須是對象的屬性 一、最基本的DataGrid綁定 1、前臺 sdk:DataGridAutoGenerateColumns= True Height= 238 HorizontalAlignment= Left Margin= 170,12,0,0 Name= dataGridTest VerticalAlignment=注:所有代碼以C#為例
DataGrid綁定的數據對象:
1、DataGrid的ItemsSource數據必須是對象List
2、DataGrid Column的Binding必須是對象的屬性
一、最基本的DataGrid綁定
1、前臺
<sdk:DataGrid?AutoGenerateColumns="True"Height="238"HorizontalAlignment="Left"Margin="170,12,0,0"Name="dataGridTest"VerticalAlignment="Top"Width="218"/>
2、后臺:
//定義類????????public?class?ContentData
????????{
????????????public?string?SCHOOLID?{?get;?set;?}
????????????public?string?NAME?{?get;?set;?}
????????????public?string?SEX?{?get;?set;?}
????????}
//實例化對象List
????????????List<ContentData>?studentContentDataList?=?new?List<ContentData>();
????????????for?(int?i?=?0;?i?<?10;?i++)
????????????{
????????????????studentContentDataList.Add(new?ContentData()?{?
????????????????????SCHOOLID="201104"+i.ToString(),
????????????????????NAME="學生"+i.ToString(),
????????????????????SEX=(i<5)?"男D":"女?"
????????????????});
????????????}
//綁定
dataGridTest.ItemsSource?=?studentContentDataList;
?
上面示例代碼的結果如下:
?
二、在ArcGIS中,DataGrid可以綁定featureset。
可以采用將數據動態寫入自定義的featureset,然后綁定DataGrid,可實現DataGrid列數動態生成,避免采用上面類、對象List中屬性數寫死的缺點。
代碼如下:
IList<Graphic>?statisticFs?=?new?List<Graphic>();??for(int?i=0;i<10;i++)?????????//i為記錄數
{
statisticFs.Add(new?Graphic());
?????????for?(int?j?=?0;?j?<?contentList.Count;?j++)?????//j為屬性數(列數)
?????????{
?????????statisticFs[i].Attributes.Add(contentList[j].NAME,?tempTotalList[j]);
?????????}
}
????//綁定
????dataGridTest.ItemsSource?=?statisticFs;
????dataGridTest.Columns.Clear();
????for?(int?i?=?0;?i?<?contentList.count;?i++)
????{
????????DataGridTextColumn?column?=?new?DataGridTextColumn();
????????column.Header?=?contentList[i].ALIAS;
????????column.Binding?=?new?System.Windows.Data.Binding("Attributes["?+?contentList[i].NAME?+?"]");
????????StatisticResult.Columns.Add(column);
?????}
其中:?List<ContentData>?contentList?=?new?List<ContentData>();??
????????public?class?ContentData
????????{
????????????public?string?NAME?{?get;?set;?}
????????????public?string?ALIAS?{?get;?set;?}
????????}
?
三、靜態綁定
DataGrid 的三種列:DataGridTextColumn、DataGridTemplateColumn、DataGridCheckBoxColumn
<DataGrid?Name="dataGridColorPreview"AutoGenerateColumns="False"Height="221"HorizontalAlignment="Left"Margin="14,169,0,0"VerticalAlignment="Top"Width="304">
????<DataGrid.Columns>
????????<DataGridTextColumn?Header="編號"Binding="{Binding?customId}"></DataGridTextColumn>
????????<DataGridTemplateColumn?Header="顏色">
????????????<DataGridTemplateColumn.CellTemplate>
????????????????<DataTemplate>
????????????????????<Rectangle?Width="100"Height="20"Fill="{Binding?colorStr}"/>
????????????????</DataTemplate>
????????????</DataGridTemplateColumn.CellTemplate>
????????</DataGridTemplateColumn>
????????<DataGridTextColumn?Header="種類(范圍)"Binding="{Binding?range}"></DataGridTextColumn>
????</DataGrid.Columns>
</DataGrid>???
四、動態綁定:XamlReader方法
System.Text.StringBuilder?sb?=?new?System.Text.StringBuilder();sb.Append("<Grid?xmlns='http://schemas.microsoft.com/winfx/2006/xaml/
presentation'?xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'??"+????????????"mlns:data='clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data'?"?+
"???xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006'?");
sb.Append("x:Name='tempGrid'?>??");
sb.Append("<data:DataGrid?x:Name='grid1'?Margin='1,1,1,1'?
AutoGenerateColumns='False'>");
sb.Append("<data:DataGrid.Columns>");
sb.Append("?<data:DataGridTextColumn?Width='160'?Header='"?+?m_FieldName?+?"'?Binding='{Binding?Attributes["?+?m_FieldsCNEN[m_FieldName]?+?"]}'?/>");
sb.Append("?</data:DataGrid.Columns>");
sb.Append("</data:DataGrid>");
sb.Append("??</Grid>??");
Grid?tempgrid?=?System.Windows.Markup.XamlReader.Load(sb.ToString())?as?Grid;
?又如:
using?System.Windows.Data;
using?System.Windows.Markup;
using?System.Text;
...
DataGridTemplateColumn?templateColumn?=?new?DataGridTemplateColumn();
templateColumn.Header?=?"Birthday";
StringBuilder?CellTemp?=?new?StringBuilder();
CellTemp.Append("<DataTemplate?");
CellTemp.Append("xmlns='http://schemas.microsoft.com/client/2007'?");
CellTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'?");
//"YourNamespace"?and?"YourAssembly"?確保正確
CellTemp.Append("xmlns:local?=?'clr-namespace:YourNamespace");
CellTemp.Append(";assembly=YourAssembly'>");
CellTemp.Append("<Grid>");
CellTemp.Append("<Grid.Resources>");
CellTemp.Append("<local:DateTimeConverter?x:Key='DateConverter'?/>");
CellTemp.Append("</Grid.Resources>");
CellTemp.Append("<TextBlock?");
CellTemp.Append("Text?=?'{Binding?Birthday,?");
CellTemp.Append("Converter={StaticResource?DateConverter}}'?");
CellTemp.Append("FontFamily='Trebuchet?MS'?FontSize='11'?");
CellTemp.Append("Margin='5,4,5,4'/>");
CellTemp.Append("</Grid>");
CellTemp.Append("</DataTemplate>");
StringBuilder?CellETemp?=?new?StringBuilder();
CellETemp.Append("<DataTemplate?");
CellETemp.Append("xmlns='http://schemas.microsoft.com/client/2007'?");
CellETemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>");
CellETemp.Append("<DatePicker?");
CellETemp.Append("SelectedDate='{Binding?Birthday,?Mode=TwoWay}'?/>");
CellETemp.Append("</DataTemplate>");
templateColumn.CellTemplate?=
(DataTemplate)XamlReader.Load(CellTemp.ToString());
templateColumn.CellEditingTemplate?=
(DataTemplate)XamlReader.Load(CellETemp.ToString());
targetDataGrid.Columns.Add(templateColumn);
本文來自Wilson的博客,原文地址:http://blog.163.com/zwx_gis/blog/static/32434435201132382957968/
轉載于:https://www.cnblogs.com/meimao5211/p/3413268.html
總結
以上是生活随笔為你收集整理的Silverlight数据绑定之DataGrid的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android学习第二天-android
- 下一篇: hdu 4545 魔法串 2013金山西