WPF数据表单分页

本文关键字:分页 表单 数据表 数据 WPF | 更新日期: 2023-09-27 17:58:10

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

我希望分页是一个单独的控件,带有第一个、上一个、下一个、最后一个标签

这种分页控制将用于任何数据输入形式,以允许用户在前一记录之间来回切换。例如,订单、发票、付款都是数据表单。用户选择"订单"时,将显示"新订单表单"。它还具有用于移动到上一条记录的分页按钮。

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

为此,我做了:在用户控件中列出。我试着将它绑定到需要分页的表单中。

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。

但想要扫清第一道障碍。感谢您的帮助。

WPF数据表单分页

不能将List<Order>强制转换为List<object>,这就是出现此错误的原因。

如果您的DataPager控件只需要控制显示的页面,而不需要实际修改集合,那么您可以简单地将Items属性定义为类型IEnumerable而不是List<object>,这个问题就会得到解决。

这是因为对于任何一个TList<T>都可以被转换为IEnumerable