2013-02-07 29 views
1

我正尝试创建在表单底部有一组字段和分页按钮的数据表单。WPF数据表格页面

我希望分页是一个单独的控制与第一,上一个,下一个,最后一个标签第1项。

此分页控件将使用任何数据输入表单,以允许用户在前一记录之间来回切换。例如,订单,发票,付款是数据表单。显示用户选择订单,新订单表单时的用户。它也有分页按钮移动到前一个记录。

我使用PagingItems的依赖属性创建了一个名为DataPager的UserControl。我希望这个依赖属性是通用的,这样我就可以通过一个项目列表(订单,发票,付款)

为此,我做了:在用户控件中列出。我试图在需要页面的表单中绑定这个。

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控制只需要控制显示哪个页面,其实不是修改集合,你可以简单地定义你的Items属性为IEnumerable,而不是List<object>类型的,那问题就解决了。

这是因为对于任何T,List<T>都可浇注到IEnumerable

+0

谢谢阿迪。我现在也在查看CollectionView – isakavis

相关问题