问题SilverLight 4 DataPager控件

时间:2011-05-10 09:39:04

标签: c# asp.net silverlight silverlight-4.0

我想将DataPager绑定到DataGrid

这里是xaml

<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"  x:Class="NorthWindSilver.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mv="clr-namespace:NorthWindSilver.ViewModel"
xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">

<UserControl.Resources>
    <mv:ViewModel x:Key="ViewModel"/>
</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White">
    <data:DataGrid Name="dgCustomer" AutoGenerateColumns="True" ItemsSource="{Binding Items, Mode=TwoWay, Source={StaticResource ViewModel}}">
    </data:DataGrid>
    <sdk:DataPager HorizontalContentAlignment="Center" x:Name="myPager" Grid.Row="2" Source="{Binding Path=ItemsSource, ElementName=dgCustomer}" PageSize="10"/>

</Grid>

和ViewModel

 public class ViewModel :  INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    public ObservableCollection<Customer> _items;

    public ViewModel()
    {
        if (!IsDesignTime)
            this.Customer();
    }

    public void ChangeProperty(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }

    }      

    public ObservableCollection<Customer> Items
    {
        get
        {
            return this._items;
        }
        set
        {
            this._items = value;
            ChangeProperty("Items");
        }
    }


    public bool IsDesignTime
    {
        get
        {
            return (Application.Current == null) ||
                (Application.Current.GetType() == typeof(Application));
        }
    }


    public void Customer()
    {
        DataServiceClient webService = new DataServiceClient();
        webService.GetCustomersCompleted += new EventHandler<GetCustomersCompletedEventArgs>(webService_GetCustomersCompleted);

        webService.GetCustomersAsync();
    }


    void webService_GetCustomersCompleted(object sender, GetCustomersCompletedEventArgs e)
    {
        Items = e.Result;

        PagedCollectionView pageView = new PagedCollectionView(Items);          

        MainPage ma = new MainPage();

        ma.dgCustomer.ItemsSource = pageView;
    }
}

Here is the result enter image description here

如您所见,DataPager不起作用 有什么问题?

1 个答案:

答案 0 :(得分:1)

尝试将ViewdCollectionView公开为ViewModel上的属性,并将DataGrid和Pager上的ItemsSource绑定到PagedCollectionView。