65.9K
CodeProject 正在变化。 阅读更多。
Home

[Silverlight] 自定义 Datapager 用户控件

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2012年8月24日

CPOL
viewsIcon

36745

downloadIcon

223

如何在 Silverlight 中创建自定义 Datapager 用户控件?

引言

本技巧将帮助您在 Silverlight 中创建一个自定义数据分页器用户控件。在本技巧中,我使用 DependencyPropertyINotifyPropertyChanged 来改变导航按钮的效果。

背景

在本技巧中,我使用了 DependencyProperty 来改变用户控件中的值。DependencyProperty 是一个 static 方法,用于改变实例化对象属性的值。我还使用了 INotifyPropertyChanged 来改变自定义用户控件中的属性值。任何人都可以将此自定义用户控件用于他们的 Silverlight 项目。

我的 Datapager 看起来像这样

Sample Image - maximum width is 600 pixels

现在我创建一个类,该类指向您的数据库 List 类。在这个类中,我编写一个函数,该函数返回一个 List 记录。

然后,最终创建 MainPage.Xaml,其中包含 DatagridCustomDatapager 用户控件。

看起来像这样

<grid horizontalalignment="Left" width="300" 
removed="White" x:name="LayoutRoot">
        <grid.rowdefinitions>
            <rowdefinition height="250" />
            <rowdefinition height="Auto" />
        </grid.rowdefinitions>
        <sdk:datagrid horizontalalignment="Stretch" verticalalignment="
        Stretch" autogeneratecolumns="True" grid.row="0" 
        name="grdEmployeesNew">
        <my:customdatapagercontrol grid.row="1" pagesize="5" 
        x:name="pagerNew">
    </my:customdatapagercontrol></sdk:datagrid></grid>

我的 MainPage.Xaml.cs 看起来像这样

 List<employee> objEmployeeList = new List<employee>();
        int pageSize = 5;

        public MainPage()
        {
            InitializeComponent();
            EmployeePageData obj = new EmployeePageData();
            objEmployeeList = obj.LoadPageRecord();
            pagerNew.PropertyChanged += 
            new System.ComponentModel.PropertyChangedEventHandler(pagerNew_PropertyChanged);
            pagerNew.CurrentPage = 1;
            pagerNew.TotalRecord = objEmployeeList.Count;
        }
        void pagerNew_PropertyChanged
        (object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "CurrentPage")
            {
                int currentPage = pagerNew.CurrentPage;
                grdEmployeesNew.ItemsSource = objEmployeeList.Skip
                	((currentPage - 1) * pageSize).Take(pageSize).ToList();
            }
        }

</employee></employee>

最终 Page 看起来像这样

Sample Image - maximum width is 600 pixels
© . All rights reserved.