稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox
生活随笔
收集整理的這篇文章主要介紹了
稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[索引頁]
[源碼下載]
穩扎穩打Silverlight(17) - 2.0數據之詳解DataGrid, 詳解ListBox
作者:webabcd
介紹
Silverlight 2.0 詳解DataGrid, 綁定數據到ListBox:
??? AutoGenerateColumns - 是否根據數據源自動生成列
??? RowDetailsVisibilityMode - 顯示相應的行的詳細數據時所使用的顯示模式
??? DataGrid.Columns - 手工定義DataGrid的列
??? DataGrid.RowDetailsTemplate - 用于顯示相應的行的詳細數據的模板
??? AreRowDetailsFrozen - 是否凍結 RowDetailsTemplate
??? GridLinesVisibility - 表格分隔線的顯示方式
??? RowBackground - 奇數數據行背景
??? AlternatingRowBackground - 偶數數據行背景
??? IsReadOnly - 單元格是否只讀
??? FrozenColumnCount - 表格所凍結的列的總數(從左邊開始數)
??? SelectionMode - 行的選中模式
??? CanUserReorderColumns - 是否允許拖動列
??? CanUserResizeColumns - 是否允許改變列的寬度
??? CanUserSortColumns - 是否允許列的排序
??? VerticalGridLinesBrush - 改變表格的垂直分隔線的 Brush
??? HorizontalGridLinesBrush - 改變表格的水平分隔線的 Brush
??? HeadersVisibility - 表頭(包括列頭和行頭)的顯示方式
在線DEMO
http://webabcd.blog.51cto.com/1787395/342779
示例
SourceDataModel.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;?
?
namespace?Silverlight20.Data?
{?
????????public?class?SourceDataModel?
????????{?
????????????????public?string?Name { get; set; }?
????????????????public?int?Age { get; set; }?
????????????????public?DateTime DayOfBirth { get; set; }?
????????????????public?bool?Male { get; set; }?
????????}?
} SourceData.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.ObjectModel;?
?
namespace?Silverlight20.Data?
{?
????????public?class?SourceData?
????????{?
????????????????//????ObservableCollection<T> 內置實現了 INotifyCollectionChanged 接口(可直接應用于 OneWay 和 TwoWay 的綁定模式)?
????????????????public?ObservableCollection<SourceDataModel> GetData()?
????????????????{?
????????????????????????var source =?new?ObservableCollection<SourceDataModel>();?
?
????????????????????????for?(int?i = 0; i < 100; i++)?
????????????????????????{?
????????????????????????????????source.Add(?
????????????????????????????????????????new?SourceDataModel?
????????????????????????????????????????{?
????????????????????????????????????????????????Name =?"Name"?+ i.ToString().PadLeft(4, '0'),?
????????????????????????????????????????????????Age =?new?Random(i).Next(20, 60),?
????????????????????????????????????????????????DayOfBirth = DateTime.Now,?
????????????????????????????????????????????????Male = Convert.ToBoolean(i % 2)?
????????????????????????????????????????});?
????????????????????????}?
?
????????????????????????return?source;?
????????????????}?
????????}?
}
1、DataGrid01.xaml <UserControl x:Class="Silverlight20.Data.DataGrid01"?
????????xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"????
????????xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"?
????????xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"????
????????xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls">?
????????<StackPanel HorizontalAlignment="Left">?
????????????????<CheckBox Content="是否凍結 RowDetailsTemplate" Margin="5"?
????????????????????????Checked="chkFreezeRowDetails_Changed" Unchecked="chkFreezeRowDetails_Changed" />?
????????????????<!--?
????????????????AutoGenerateColumns - 是否根據數據源自動生成列。默認值為 true?
????????????????RowDetailsVisibilityMode - 顯示相應的行的詳細數據時所使用的顯示模式 [System.Windows.Controls.DataGridRowDetailsVisibilityMode枚舉]?
????????????????????????DataGridRowDetailsVisibilityMode.Collapsed - 總不顯示?????????
????????????????????????DataGridRowDetailsVisibilityMode.Visible - 總是顯示?????
????????????????????????DataGridRowDetailsVisibilityMode.VisibleWhenSelected - 只顯示選中行的詳細數據。默認值????????????????????
????????????????-->?
????????????????<data:DataGrid x:Name="DataGrid1" Margin="5"?
????????????????????????Width="400" Height="200"????
????????????????????????AutoGenerateColumns="False"????
????????????????????????>?
????????????????????????<!--?
????????????????????????DataGrid.Columns - 手工定義DataGrid的列?
????????????????????????????????DataGridTextColumn - 該列的單元格內文本方式顯示?
????????????????????????????????DataGridCheckBoxColumn - 該列的單元格以復選框方式顯示?
????????????????????????????????DataGridTemplateColumn - 該列的單元格以自定義方式顯示?
????????????????????????????????????????DataGridTemplateColumn.CellTemplate - 顯示模式下的單元格模板?
????????????????????????????????????????DataGridTemplateColumn.CellEditingTemplate - 編輯模式下的單元格模板?
????????????????????????-->?
????????????????????????<data:DataGrid.Columns>?
????????????????????????????????<data:DataGridTextColumn Header="姓名" Binding="{Binding Name}" />?
????????????????????????????????<data:DataGridTextColumn Header="生日" Binding="{Binding DayOfBirth}" />?
????????????????????????????????<data:DataGridTextColumn Header="年齡" Binding="{Binding Age}" />?
????????????????????????????????<data:DataGridCheckBoxColumn Header="性別" Binding="{Binding Male}" />?
????????????????????????????????<data:DataGridTemplateColumn Header="生日">?
????????????????????????????????????????<data:DataGridTemplateColumn.CellTemplate>?
????????????????????????????????????????????????<DataTemplate>?
????????????????????????????????????????????????????????<Grid>?
????????????????????????????????????????????????????????????????<Rectangle Fill="Red" Margin="2" />?
????????????????????????????????????????????????????????????????<TextBlock Text="{Binding DayOfBirth}" Foreground="Yellow" />?
????????????????????????????????????????????????????????</Grid>?
????????????????????????????????????????????????</DataTemplate>?
????????????????????????????????????????</data:DataGridTemplateColumn.CellTemplate>?
????????????????????????????????????????<data:DataGridTemplateColumn.CellEditingTemplate>?
????????????????????????????????????????????????<DataTemplate>?
????????????????????????????????????????????????????????<basics:DatePicker SelectedDate="{Binding DayOfBirth}" />?
????????????????????????????????????????????????</DataTemplate>?
????????????????????????????????????????</data:DataGridTemplateColumn.CellEditingTemplate>?
????????????????????????????????</data:DataGridTemplateColumn>?
????????????????????????</data:DataGrid.Columns>?
????????????????????????<!--?
????????????????????????DataGrid.RowDetailsTemplate - 用于顯示相應的行的詳細數據的模板?
????????????????????????-->?
????????????????????????<data:DataGrid.RowDetailsTemplate>?
????????????????????????????????<DataTemplate>?
????????????????????????????????????????<StackPanel Margin="5" Background="Aqua" Height="100">?
????????????????????????????????????????????????<TextBlock Text="{Binding Name}" Margin="5"????/>?
????????????????????????????????????????????????<TextBlock Text="{Binding Age}" Margin="5"????/>?
????????????????????????????????????????????????<TextBlock Text="{Binding DayOfBirth}" Margin="5"????/>?
????????????????????????????????????????</StackPanel>?
????????????????????????????????</DataTemplate>?
????????????????????????</data:DataGrid.RowDetailsTemplate>?
????????????????</data:DataGrid>?
????????</StackPanel>?
</UserControl> DataGrid01.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;?
?
namespace?Silverlight20.Data?
{?
????????public?partial?class?DataGrid01 : UserControl?
????????{?
????????????????public?DataGrid01()?
????????????????{?
????????????????????????InitializeComponent();?
?
????????????????????????BindData();?
????????????????}?
?
????????????????void?BindData()?
????????????????{?
????????????????????????var source =?new?Data.SourceData();?
?
????????????????????????// 設置 DataGrid 的數據源?
????????????????????????DataGrid1.ItemsSource = source.GetData();?
????????????????}?
?
????????????????private?void?chkFreezeRowDetails_Changed(object?sender, RoutedEventArgs e)?
????????????????{?
????????????????????????// AreRowDetailsFrozen - 是否凍結 RowDetailsTemplate 。 默認值為 false?
????????????????????????//???????? 如果等于 true ,那么在 DataGrid 的水平滾動條滾動的時候 RowDetailsTemplate 不會跟著滾動?
?
????????????????????????CheckBox chk = sender?as?CheckBox;?
?
????????????????????????if?(DataGrid1 !=?null)?
????????????????????????????????DataGrid1.AreRowDetailsFrozen = (bool)chk.IsChecked;?
????????????????}?
????????}?
} 未完待續>>
OK
[源碼下載]
? ? ?本文轉自webabcd 51CTO博客,原文鏈接:http://blog.51cto.com/webabcd/343109,如需轉載請自行聯系原作者
[源碼下載]
穩扎穩打Silverlight(17) - 2.0數據之詳解DataGrid, 詳解ListBox
作者:webabcd
介紹
Silverlight 2.0 詳解DataGrid, 綁定數據到ListBox:
??? AutoGenerateColumns - 是否根據數據源自動生成列
??? RowDetailsVisibilityMode - 顯示相應的行的詳細數據時所使用的顯示模式
??? DataGrid.Columns - 手工定義DataGrid的列
??? DataGrid.RowDetailsTemplate - 用于顯示相應的行的詳細數據的模板
??? AreRowDetailsFrozen - 是否凍結 RowDetailsTemplate
??? GridLinesVisibility - 表格分隔線的顯示方式
??? RowBackground - 奇數數據行背景
??? AlternatingRowBackground - 偶數數據行背景
??? IsReadOnly - 單元格是否只讀
??? FrozenColumnCount - 表格所凍結的列的總數(從左邊開始數)
??? SelectionMode - 行的選中模式
??? CanUserReorderColumns - 是否允許拖動列
??? CanUserResizeColumns - 是否允許改變列的寬度
??? CanUserSortColumns - 是否允許列的排序
??? VerticalGridLinesBrush - 改變表格的垂直分隔線的 Brush
??? HorizontalGridLinesBrush - 改變表格的水平分隔線的 Brush
??? HeadersVisibility - 表頭(包括列頭和行頭)的顯示方式
在線DEMO
http://webabcd.blog.51cto.com/1787395/342779
示例
SourceDataModel.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;?
?
namespace?Silverlight20.Data?
{?
????????public?class?SourceDataModel?
????????{?
????????????????public?string?Name { get; set; }?
????????????????public?int?Age { get; set; }?
????????????????public?DateTime DayOfBirth { get; set; }?
????????????????public?bool?Male { get; set; }?
????????}?
} SourceData.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.ObjectModel;?
?
namespace?Silverlight20.Data?
{?
????????public?class?SourceData?
????????{?
????????????????//????ObservableCollection<T> 內置實現了 INotifyCollectionChanged 接口(可直接應用于 OneWay 和 TwoWay 的綁定模式)?
????????????????public?ObservableCollection<SourceDataModel> GetData()?
????????????????{?
????????????????????????var source =?new?ObservableCollection<SourceDataModel>();?
?
????????????????????????for?(int?i = 0; i < 100; i++)?
????????????????????????{?
????????????????????????????????source.Add(?
????????????????????????????????????????new?SourceDataModel?
????????????????????????????????????????{?
????????????????????????????????????????????????Name =?"Name"?+ i.ToString().PadLeft(4, '0'),?
????????????????????????????????????????????????Age =?new?Random(i).Next(20, 60),?
????????????????????????????????????????????????DayOfBirth = DateTime.Now,?
????????????????????????????????????????????????Male = Convert.ToBoolean(i % 2)?
????????????????????????????????????????});?
????????????????????????}?
?
????????????????????????return?source;?
????????????????}?
????????}?
}
1、DataGrid01.xaml <UserControl x:Class="Silverlight20.Data.DataGrid01"?
????????xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"????
????????xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"?
????????xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"????
????????xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls">?
????????<StackPanel HorizontalAlignment="Left">?
????????????????<CheckBox Content="是否凍結 RowDetailsTemplate" Margin="5"?
????????????????????????Checked="chkFreezeRowDetails_Changed" Unchecked="chkFreezeRowDetails_Changed" />?
????????????????<!--?
????????????????AutoGenerateColumns - 是否根據數據源自動生成列。默認值為 true?
????????????????RowDetailsVisibilityMode - 顯示相應的行的詳細數據時所使用的顯示模式 [System.Windows.Controls.DataGridRowDetailsVisibilityMode枚舉]?
????????????????????????DataGridRowDetailsVisibilityMode.Collapsed - 總不顯示?????????
????????????????????????DataGridRowDetailsVisibilityMode.Visible - 總是顯示?????
????????????????????????DataGridRowDetailsVisibilityMode.VisibleWhenSelected - 只顯示選中行的詳細數據。默認值????????????????????
????????????????-->?
????????????????<data:DataGrid x:Name="DataGrid1" Margin="5"?
????????????????????????Width="400" Height="200"????
????????????????????????AutoGenerateColumns="False"????
????????????????????????>?
????????????????????????<!--?
????????????????????????DataGrid.Columns - 手工定義DataGrid的列?
????????????????????????????????DataGridTextColumn - 該列的單元格內文本方式顯示?
????????????????????????????????DataGridCheckBoxColumn - 該列的單元格以復選框方式顯示?
????????????????????????????????DataGridTemplateColumn - 該列的單元格以自定義方式顯示?
????????????????????????????????????????DataGridTemplateColumn.CellTemplate - 顯示模式下的單元格模板?
????????????????????????????????????????DataGridTemplateColumn.CellEditingTemplate - 編輯模式下的單元格模板?
????????????????????????-->?
????????????????????????<data:DataGrid.Columns>?
????????????????????????????????<data:DataGridTextColumn Header="姓名" Binding="{Binding Name}" />?
????????????????????????????????<data:DataGridTextColumn Header="生日" Binding="{Binding DayOfBirth}" />?
????????????????????????????????<data:DataGridTextColumn Header="年齡" Binding="{Binding Age}" />?
????????????????????????????????<data:DataGridCheckBoxColumn Header="性別" Binding="{Binding Male}" />?
????????????????????????????????<data:DataGridTemplateColumn Header="生日">?
????????????????????????????????????????<data:DataGridTemplateColumn.CellTemplate>?
????????????????????????????????????????????????<DataTemplate>?
????????????????????????????????????????????????????????<Grid>?
????????????????????????????????????????????????????????????????<Rectangle Fill="Red" Margin="2" />?
????????????????????????????????????????????????????????????????<TextBlock Text="{Binding DayOfBirth}" Foreground="Yellow" />?
????????????????????????????????????????????????????????</Grid>?
????????????????????????????????????????????????</DataTemplate>?
????????????????????????????????????????</data:DataGridTemplateColumn.CellTemplate>?
????????????????????????????????????????<data:DataGridTemplateColumn.CellEditingTemplate>?
????????????????????????????????????????????????<DataTemplate>?
????????????????????????????????????????????????????????<basics:DatePicker SelectedDate="{Binding DayOfBirth}" />?
????????????????????????????????????????????????</DataTemplate>?
????????????????????????????????????????</data:DataGridTemplateColumn.CellEditingTemplate>?
????????????????????????????????</data:DataGridTemplateColumn>?
????????????????????????</data:DataGrid.Columns>?
????????????????????????<!--?
????????????????????????DataGrid.RowDetailsTemplate - 用于顯示相應的行的詳細數據的模板?
????????????????????????-->?
????????????????????????<data:DataGrid.RowDetailsTemplate>?
????????????????????????????????<DataTemplate>?
????????????????????????????????????????<StackPanel Margin="5" Background="Aqua" Height="100">?
????????????????????????????????????????????????<TextBlock Text="{Binding Name}" Margin="5"????/>?
????????????????????????????????????????????????<TextBlock Text="{Binding Age}" Margin="5"????/>?
????????????????????????????????????????????????<TextBlock Text="{Binding DayOfBirth}" Margin="5"????/>?
????????????????????????????????????????</StackPanel>?
????????????????????????????????</DataTemplate>?
????????????????????????</data:DataGrid.RowDetailsTemplate>?
????????????????</data:DataGrid>?
????????</StackPanel>?
</UserControl> DataGrid01.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;?
?
namespace?Silverlight20.Data?
{?
????????public?partial?class?DataGrid01 : UserControl?
????????{?
????????????????public?DataGrid01()?
????????????????{?
????????????????????????InitializeComponent();?
?
????????????????????????BindData();?
????????????????}?
?
????????????????void?BindData()?
????????????????{?
????????????????????????var source =?new?Data.SourceData();?
?
????????????????????????// 設置 DataGrid 的數據源?
????????????????????????DataGrid1.ItemsSource = source.GetData();?
????????????????}?
?
????????????????private?void?chkFreezeRowDetails_Changed(object?sender, RoutedEventArgs e)?
????????????????{?
????????????????????????// AreRowDetailsFrozen - 是否凍結 RowDetailsTemplate 。 默認值為 false?
????????????????????????//???????? 如果等于 true ,那么在 DataGrid 的水平滾動條滾動的時候 RowDetailsTemplate 不會跟著滾動?
?
????????????????????????CheckBox chk = sender?as?CheckBox;?
?
????????????????????????if?(DataGrid1 !=?null)?
????????????????????????????????DataGrid1.AreRowDetailsFrozen = (bool)chk.IsChecked;?
????????????????}?
????????}?
} 未完待續>>
OK
[源碼下載]
? ? ?本文轉自webabcd 51CTO博客,原文鏈接:http://blog.51cto.com/webabcd/343109,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#中数据类型的安全转换(is,as)
- 下一篇: 网路游侠:用防篡改和WAF保护网站安全