Проблема управления SilverPight 4 DataPager - PullRequest
0 голосов
/ 10 мая 2011

Я хочу связать 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;
    }
}

Здесьрезультат enter image description here

Как вы видите DataPager не работает, в чем проблема?

1 Ответ

1 голос
/ 10 мая 2011

Попробуйте представить свой PagedCollectionView как свойство в ViewModel и вместо этого связать ItemsSource в DataGrid и Pager с PagedCollectionView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...