2013-02-07 2 views
1

폼의 맨 아래에 필드 및 페이징 단추 집합이있는 데이터 폼을 만들려고합니다.WPF 데이터 양식 페이징

페이징을 첫 번째, 이전, 다음, 마지막으로 레이블 n의 항목 1과 별도로 제어하고 싶습니다.

이 페이징 컨트롤은 사용자가 이전 레코드간에 앞뒤로 이동할 수 있도록 모든 데이터 입력 폼에 사용됩니다. 예를 들어, 주문, 청구서, 지불은 데이터 양식입니다. 사용자가 Orders, New Order Form을 선택할 때 사용자가 표시됩니다. 또한 이전 레코드로 이동하는 페이징 단추가 있습니다.

종속성 속성이 PagingItems 인 DataPager라는 UserControl을 만들었습니다. 이 종속성 속성을 일반 항목으로 지정하여 항목 (Order, Invoice, Payment)의 목록을 전달할 수있게하십시오.

이렇게하려면 사용자 정의 컨트롤에 나열하십시오. 페이지에 필요한 양식으로 바인딩을 시도했습니다.

public List<object> Items 
{ 
    get { return (List<object>)GetValue(ItemsProperty); } 
    set { SetValue(ItemsProperty, value); } 
} 

// Using a DependencyProperty as the backing store for Items. This enables animation, styling, binding, etc... 
public static readonly DependencyProperty ItemsProperty = 
     DependencyProperty.Register("Items", typeof(List<object>), typeof(DataPager), new UIPropertyMetadata(null, LoadItems)); 

private static void LoadItems(DependencyObject obj, DependencyPropertyChangedEventArgs e) 
{ 
    DataPager thisControl = (DataPager)obj; 
    thisControl.RefreshItems(); 
} 

나는 제어 및 바인딩을 사용하여 페이지에 다음과 같은 오류가 점점 오전 :

System.Windows.Data Error: 1 : Cannot create default converter to perform 'one-way' conversions between types 'System.Collections.Generic.List`1[PagingSample.Order]' and 'System.Collections.Generic.List`1[System.Object]'. Consider using Converter property of Binding. BindingExpression:Path=Orders; DataItem='MainViewModel' (HashCode=26754911); target element is 'DataPager' (Name='dataPager1'); target property is 'Items' (type 'List`1') 

System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='System.Collections.Generic.List`1[PagingSample.Order]' BindingExpression:Path=Orders; DataItem='MainViewModel' (HashCode=26754911); target element is 'DataPager' (Name='dataPager1'); target property is 'Items' (type 'List`1') 

내가있는 DataPager를 유지할 수있는 방법을 확실하지가 일반적으로 항목의 속성을 제어합니다. 아직 부모 컨트롤에 표시 할 CurrentItem을 지정하는 방법을 알지 못했습니다.

하지만 첫 번째 장애물을 해결하고 싶었습니다. 어떤 도움을 주셔서 감사합니다.

답변

1

List<Order>에서 List<object>까지 캐스팅 할 수 없습니다.이 오류가 발생합니다. 당신의 DataPager 컨트롤 만 표시, 실제로 컬렉션을 수정되지 않은 페이지를 제어 할 필요가있는 경우

, 당신은 단순히 유형 IEnumerable 대신 List<object> 될 당신의 Items 속성을 정의 할 수 있습니다, 그 문제는 해결 될 것이다.

T의 경우 List<T>IEnumerable으로 캐스팅 할 수 있기 때문입니다.

+0

감사합니다. Adi. 나는 지금 CollectionView도보고있다. – isakavis