热门:网页模板.net视频教程JQueryMVCjsonExtJs源码示例三级联动JQuery菜单
您现在的位置:.Net中文社区>> Silverlight>>正文内容

【SilverLight】学习DataPager,DataForm控件(附示例源码下载)

发布时间:2010年07月13日点击数: 佚名

这一节学习DataPager,DataForm控件【示例源码下载

效果如图

DataPager

 

DataForm

1.DataPagerDemo.xaml

  1. <UserControl x:Class="Silverlight.Common.View.DataPagerDemo" 
  2.      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4.     xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 
  5.     xmlns:input="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"> 
  6.     <Grid Background="White"> 
  7.         <Grid> 
  8.             <Grid.RowDefinitions> 
  9.                 <RowDefinition  Height="Auto"/> 
  10.                 <RowDefinition Height="200" /> 
  11.                 <RowDefinition Height="200" /> 
  12.             </Grid.RowDefinitions> 
  13.             <Grid.ColumnDefinitions> 
  14.                 <ColumnDefinition Width="200" MinWidth="200" /> 
  15.                 <ColumnDefinition Width="500" /> 
  16.             </Grid.ColumnDefinitions> 
  17.             <ContentControl  Content="显示样式:" /> 
  18.             <ContentControl  Content="数据" Grid.Column="1" /> 
  19.             <data:DataGrid Grid.Column="1" IsReadOnly="False" Grid.Row="1" ItemsSource="{Binding}" Margin="5" /> 
  20.             <ListBox ItemsSource="{Binding}" Grid.Row="2" Grid.Column="1" Margin="5"> 
  21.                 <ListBox.ItemTemplate> 
  22.                     <DataTemplate> 
  23.                         <StackPanel Orientation="Horizontal"> 
  24.                             <TextBlock Text="{Binding Name}"/> 
  25.                             <TextBlock Text=" - " /> 
  26.                             <TextBlock Text="{Binding CodeFaa}" /> 
  27.                         </StackPanel> 
  28.                     </DataTemplate> 
  29.                 </ListBox.ItemTemplate> 
  30.             </ListBox> 
  31.             <StackPanel Grid.Row="1" Grid.RowSpan="2"> 
  32.                 <TextBlock  Text="FirstLastNumeric样式:" /> 
  33.                 <data:DataPager x:Name="dataPager" DisplayMode="FirstLastNumeric" Margin="0,0,0,4" HorizontalAlignment="Center" Source="{Binding}" NumericButtonCount="{Binding Value, ElementName=numericButtonCount}" AutoEllipsis="{Binding IsChecked, ElementName=autoEllipsis}"  IsTotalItemCountFixed="{Binding IsChecked, ElementName=totalItemCountFixed}" /> 
  34.                 <TextBlock  Text="FirstLastPreviousNext样式:" /> 
  35.                 <data:DataPager DisplayMode="FirstLastPreviousNext" Margin="0,0,0,4" HorizontalAlignment="Center" Source="{Binding}" NumericButtonCount="{Binding Value, ElementName=numericButtonCount}" AutoEllipsis="{Binding IsChecked, ElementName=autoEllipsis}" IsTotalItemCountFixed="{Binding IsChecked, ElementName=totalItemCountFixed}" /> 
  36.                 <TextBlock  Text="FirstLastPreviousNextNumeric样式:" /> 
  37.                 <data:DataPager DisplayMode="FirstLastPreviousNextNumeric" Margin="0,0,0,4" HorizontalAlignment="Center" Source="{Binding}" NumericButtonCount="{Binding Value, ElementName=numericButtonCount}" AutoEllipsis="{Binding IsChecked, ElementName=autoEllipsis}" IsTotalItemCountFixed="{Binding IsChecked, ElementName=totalItemCountFixed}" /> 
  38.                 <TextBlock  Text="Numeric样式:" /> 
  39.                 <data:DataPager DisplayMode="Numeric" Margin="0,0,0,4" HorizontalAlignment="Center" Source="{Binding}" NumericButtonCount="{Binding Value, ElementName=numericButtonCount}" AutoEllipsis="{Binding IsChecked, ElementName=autoEllipsis}" IsTotalItemCountFixed="{Binding IsChecked, ElementName=totalItemCountFixed}" /> 
  40.                 <TextBlock  Text="PreviousNext样式:" /> 
  41.                 <data:DataPager DisplayMode="PreviousNext" Margin="0,0,0,4" HorizontalAlignment="Center" Source="{Binding}" NumericButtonCount="{Binding Value, ElementName=numericButtonCount}" AutoEllipsis="{Binding IsChecked, ElementName=autoEllipsis}" IsTotalItemCountFixed="{Binding IsChecked, ElementName=totalItemCountFixed}" /> 
  42.                 <TextBlock  Text="PreviousNextNumeric样式:" /> 
  43.                 <data:DataPager DisplayMode="PreviousNextNumeric" Margin="0,0,0,4" HorizontalAlignment="Center" Source="{Binding}" NumericButtonCount="{Binding Value, ElementName=numericButtonCount}" AutoEllipsis="{Binding IsChecked, ElementName=autoEllipsis}" IsTotalItemCountFixed="{Binding IsChecked, ElementName=totalItemCountFixed}" /> 
  44.                 <CheckBox x:Name="autoEllipsis" Content="AutoEllipsis" Margin="4" /> 
  45.                 <CheckBox x:Name="totalItemCountFixed" Content="IsTotalItemCountFixed属性" IsChecked="True" Margin="4" /> 
  46.                 <input:NumericUpDown x:Name="numpageSize" ValueChanging="numpageSize_ValueChanging"></input:NumericUpDown> 
  47.                 <Grid Height="0"> 
  48.                     <Grid.ColumnDefinitions> 
  49.                         <ColumnDefinition /> 
  50.                         <ColumnDefinition /> 
  51.                     </Grid.ColumnDefinitions> 
  52.                     <Grid.RowDefinitions> 
  53.                         <RowDefinition /> 
  54.                         <RowDefinition /> 
  55.                     </Grid.RowDefinitions> 
  56.                     <TextBlock Text="NumericButtonCount:" VerticalAlignment="Center" Grid.Row="0" Grid.Column="0" Margin="4" /> 
  57.                     <input:NumericUpDown x:Name="numericButtonCount" Value="5" Minimum="0" Maximum="20" VerticalAlignment="Center" Grid.Row="0" Grid.Column="1" Margin="4" /> 
  58.                     <TextBlock Text="PageSize:" VerticalAlignment="Center" Grid.Row="1" Grid.Column="0" Margin="4" /> 
  59.                     <input:NumericUpDown Value="{Binding PageSize, Mode=TwoWay}" Minimum="1" VerticalAlignment="Center" Grid.Row="1" Grid.Column="1" Margin="4" /> 
  60.                 </Grid> 
  61.             </StackPanel> 
  62.         </Grid> 
  63.     </Grid> 
  64. </UserControl> 

2.DataPagerDemo.cs

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Net; 
  5. using System.Windows; 
  6. using System.Windows.Controls; 
  7. using System.Windows.Documents; 
  8. using System.Windows.Input; 
  9. using System.Windows.Media; 
  10. using System.Windows.Media.Animation; 
  11. using System.Windows.Shapes; 
  12. using System.Windows.Data; 
  13. using Silverlight.Common.Core; 
  14. namespace Silverlight.Common.View 
  15.     public partial class DataPagerDemo : UserControl 
  16.     { 
  17.         public DataPagerDemo() 
  18.         { 
  19.             InitializeComponent(); 
  20.             if (UserList.GetUserList().Count > 0) 
  21.             { 
  22.                 PagedCollectionView pcv = new PagedCollectionView(UserList.GetUserList()); 
  23.                 pcv.PageSize = 2; 
  24.                 DataContext = pcv; 
  25.             } 
  26.             else {  
  27.             MessageBox.Show("没有数据"); 
  28.             } 
  29.            
  30.         } 
  31.         private void numpageSize_ValueChanging(object sender, RoutedPropertyChangingEventArgs<double> e) 
  32.         { 
  33.             if (this.numpageSize.Value>0) 
  34.             { 
  35.                 this.dataPager.PageSize =Convert.ToInt32(this.numpageSize.Value); 
  36.             } 
  37.         } 
  38.     } 

3.DataFormDemo.xaml

  1.  <UserControl x:Class="Silverlight.Common.View.DataFormDemo" 
  2.      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4.     xmlns:dataform="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit" 
  5.     xmlns:input="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" 
  6.     xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
  7.     <StackPanel> 
  8.         <ContentControl Content="DataForm" /> 
  9.         <StackPanel> 
  10.             <Grid> 
  11.                 <Grid.ColumnDefinitions> 
  12.                     <ColumnDefinition Width="Auto" /> 
  13.                     <ColumnDefinition /> 
  14.                 </Grid.ColumnDefinitions> 
  15.                 <StackPanel Grid.Column="0"> 
  16.                     <CheckBox Content="AutoCommit" IsChecked="{Binding AutoCommit, ElementName=dataForm, Mode=TwoWay}" Margin="4" /> 
  17.                     <CheckBox Content="AutoEdit" IsChecked="{Binding AutoEdit, ElementName=dataForm, Mode=TwoWay}" Margin="4" /> 
  18.                     <TextBlock Text="CommandButtonsVisibility"  Margin="4" /> 
  19.                     <ComboBox SelectedItem="{Binding CommandButtonsVisibility, ElementName=dataForm, Mode=TwoWay}" SelectedIndex="0" Margin="4"> 
  20.                         <sys:String>All</sys:String> 
  21.                         <sys:String>Add</sys:String> 
  22.                         <sys:String>Delete</sys:String> 
  23.                         <sys:String>Edit</sys:String> 
  24.                         <sys:String>Navigation</sys:String> 
  25.                         <sys:String>None</sys:String> 
  26.                     </ComboBox> 
  27.                     <CheckBox Content="IsReadOnly" x:Name="cbIsEditable" Click="IsEditable_Click" Margin="4" /> 
  28.                 </StackPanel> 
  29.                 <dataform:DataForm  x:Name="dataForm" Width="350" ItemsSource="{Binding}" HorizontalAlignment="Left" MaxWidth="500" Margin="4" Grid.Column="1" /> 
  30.             </Grid> 
  31.         </StackPanel> 
  32.     </StackPanel> 
  33. </UserControl> 

4.DataFormDemo.cs

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Net; 
  5. using System.Windows; 
  6. using System.Windows.Controls; 
  7. using System.Windows.Documents; 
  8. using System.Windows.Input; 
  9. using System.Windows.Media; 
  10. using System.Windows.Media.Animation; 
  11. using System.Windows.Shapes; 
  12. using System.Windows.Data; 
  13. using Silverlight.Common.Core; 
  14. namespace Silverlight.Common.View 
  15.     public partial class DataFormDemo : UserControl 
  16.     { 
  17.         public DataFormDemo() 
  18.         { 
  19.             InitializeComponent(); 
  20.             DataContext = UserList.GetUserList(); 
  21.         } 
  22.         private void IsEditable_Click(object sender, RoutedEventArgs e) 
  23.         { 
  24.             if ((bool)this.cbIsEditable.IsChecked) 
  25.             { 
  26.                 this.dataForm.IsReadOnly = true
  27.             } 
  28.             else { 
  29.                 this.dataForm.IsReadOnly = false
  30.             } 
  31.         } 
  32.     } 

5.User.cs

  1. using System; 
  2. using System.Net; 
  3. using System.Windows; 
  4. using System.Windows.Controls; 
  5. using System.Windows.Documents; 
  6. using System.Windows.Ink; 
  7. using System.Windows.Input; 
  8. using System.Windows.Media; 
  9. using System.Windows.Media.Animation; 
  10. using System.Windows.Shapes; 
  11. namespace Silverlight.Common.Core 
  12.     public class User 
  13.     { 
  14.         /// <summary> 
  15.         /// 用户ID 
  16.         /// </summary> 
  17.         public virtual int UserID { getset; } 
  18.         /// <summary> 
  19.         /// 用户名 
  20.         /// </summary> 
  21.         public virtual string UserName { getset; } 
  22.         /// <summary> 
  23.         /// 用户姓名 
  24.         /// </summary> 
  25.         public virtual string Name { getset; } 
  26.         /// <summary> 
  27.         /// 用户密码 
  28.         /// </summary> 
  29.         public virtual string Password { getset; } 
  30.         /// <summary> 
  31.         /// 用户描述 
  32.         /// </summary> 
  33.         public virtual string Description { getset; } 
  34.         /// <summary> 
  35.         /// 是否启用 
  36.         /// </summary> 
  37.         public virtual bool IsEnabled { getset; } 
  38.         /// <summary> 
  39.         /// 密码恢复问题 
  40.         /// </summary> 
  41.         public virtual string Question { getset; } 
  42.         /// <summary> 
  43.         /// 密码恢复答案 
  44.         /// </summary> 
  45.         public virtual string Answer { getset; } 
  46.     } 

6.UserList.cs

  1. using System; 
  2. using System.Net; 
  3. using System.Windows; 
  4. using System.Windows.Controls; 
  5. using System.Windows.Documents; 
  6. using System.Windows.Ink; 
  7. using System.Windows.Input; 
  8. using System.Windows.Media; 
  9. using System.Windows.Media.Animation; 
  10. using System.Windows.Shapes; 
  11. using System.Collections.Generic; 
  12. namespace Silverlight.Common.Core 
  13.     public static class UserList 
  14.     { 
  15.         public static IList<User> GetUserList() 
  16.         { 
  17.             IList<User> userList = new List<User>(); 
  18.             userList.Add(new User { Answer="我的家乡在哪?",Description="超级管理员权限",IsEnabled=true,Name="吴建强",Password="11111",Question="山西省神池县",UserID=1,UserName="admin"}); 
  19.             userList.Add(new User { Answer = "我最喜欢的国家?", Description = "普通用户权限", IsEnabled = true, Name = "吴建强", Password = "sfsgfsd", Question = "韩国", UserID = 2, UserName = "lxt" }); 
  20.             userList.Add(new User { Answer = "我最喜欢的人?", Description = "普通用户权限", IsEnabled = true, Name = "李秀婷", Password = "11111", Question = "山西省神池县", UserID = 3, UserName = "wjq" }); 
  21.             userList.Add(new User { Answer = "我最喜欢的明星?", Description = "普通用户权限", IsEnabled = true, Name = "权相宇,李连杰", Password = "11111", Question = "权相宇,李连杰", UserID = 4, UserName = "qxy" }); 
  22.             userList.Add(new User { Answer = "我最爱看的电影?", Description = "普通用户权限", IsEnabled = true, Name = "李连杰", Password = "11111", Question = "精武英雄", UserID = 5, UserName = "lxj" }); 
  23.             userList.Add(new User { Answer = "我最爱看的电视剧?", Description = "普通用户权限", IsEnabled = true, Name = "权相宇", Password = "11111", Question = "《悲伤恋歌》", UserID = 6, UserName = "admin" }); 
  24.             userList.Add(new User { Answer = "我的梦想?", Description = "普通用户权限", IsEnabled = true, Name = "吴建强", Password = "11111", Question = "成为亿万富翁", UserID = 7, UserName = "llj" }); 
  25.             userList.Add(new User { Answer = "我最喜欢事?", Description = "普通用户权限", IsEnabled = true, Name = "吴建强", Password = "11111", Question = "编程", UserID = 8, UserName = "admin" }); 
  26.             userList.Add(new User { Answer = "我的家乡在哪?", Description = "普通用户权限", IsEnabled = true, Name = "吴建强", Password = "11111", Question = "山西省神池县", UserID = 9, UserName = "admin" }); 
  27.             userList.Add(new User { Answer = "我的家乡在哪?", Description = "普通用户权限", IsEnabled = true, Name = "吴建强", Password = "11111", Question = "山西省神池县", UserID = 10, UserName = "admin" }); 
  28.             userList.Add(new User { Answer = "我的家乡在哪?", Description = "普通用户权限", IsEnabled = true, Name = "吴建强", Password = "11111", Question = "山西省神池县", UserID = 11, UserName = "admin" }); 
  29.             userList.Add(new User { Answer = "我最喜欢事?", Description = "普通用户权限", IsEnabled = true, Name = "吴建强", Password = "11111", Question = "编程", UserID = 12, UserName = "admin" }); 
  30.             userList.Add(new User { Answer = "我的家乡在哪?", Description = "普通用户权限", IsEnabled = true, Name = "吴建强", Password = "11111", Question = "山西省神池县", UserID = 13, UserName = "admin" }); 
  31.             userList.Add(new User { Answer = "我的家乡在哪?", Description = "普通用户权限", IsEnabled = true, Name = "吴建强", Password = "11111", Question = "山西省神池县", UserID = 14, UserName = "admin" }); 
  32.             userList.Add(new User { Answer = "我的家乡在哪?", Description = "普通用户权限", IsEnabled = true, Name = "吴建强", Password = "11111", Question = "山西省神池县", UserID = 15, UserName = "admin" }); 
  33.             return userList; 
  34.         } 
  35.     } 
  36.   

注:使用DataPager无需我们在写分页代码,这样大大减少了我们的代码量,只需绑定数据源。
    DataForm可以将数据保存到数据库中,这个例子中没有实现此功能,往后会逐一完善。

本站热点业务

更多模板/案例展示

关于我们 | 联系我们 | 团队日志 | 网站地图 | 网站合作