【问题标题】:I need to pass database data to listview我需要将数据库数据传递给 listview
【发布时间】:2019-02-28 15:13:26
【问题描述】:

在我的视图模型中

public ObservableCollection<AddExpenses> _expenses;

public ObservableCollection<AddExpenses> Expenses
{
    get
    {
        if (_expenses == null)
        {
            _expenses = new ObserrvableCollection<AddExpenses>();
        }
        return _expenses;
    }
}

public ICommand click { get; set; }

public TransactionViewModel(Register_person logindata)
{
    click = new Command(add)
}

private void add()
{
    var database = new Database();
    var expenses = database.GetFinalExpense(10);

    foreach (var expense in expenses)
    {
        Expenses.Add(expense);
    }
}

在我的 database.cs 中

public AddExpenses[] GetFinalExpense(int numberOfExpenses)
{
    return Conn.Table<AddExpenses>()
               .OrderByDescending(expenses => expenses.Id)
               .Take(numberOfExpenses)
               .ToArray();
}

我使用此代码将最后十个记录添加到我的列表视图中。 当我调用 GetFinalExpense(10) 时,它需要所有最后 10 条记录。但是当我执行 add 函数时,它只显示两个数据,一个是类型是 DateTime,另一个是 Double。我的另外两个数据是字符串格式。据我所知,数据绑定和 XAML 部分没有问题(不完全确定)

这里是我的 XAML

<ListView ItemsSource="{Binding Expenses}" VerticalOptions="FillAndExpand" >

    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Orientation="Vertical">
                    <StackLayout Orientation="Horizontal">
                    <Label Text="{Binding Catagoryview}"/>
                        <Label Text="{Binding Date}"/>
                    <Label Text="{Binding Expense}"/>
                    <Label Text="{Binding username}"/>
                    </StackLayout>
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

我需要在列表视图中显示所有这些。另外,我需要另一个帮助我的 DateTime 类型给我日期和时间我只需要日期。但它不是主要问题是列表视图

【问题讨论】:

  • 你能分享你模型中的代码AddExpenses吗?并确保在您的Expenses 中获取四个数据。

标签: c# mvvm xamarin.forms


【解决方案1】:

您确定模型中的属性名称与 XAML 中的相同吗?

命名似乎不一致,username 都很小,而其余名称以大写字母开头,代码中Categoryview 不是CategoryView

对于日期格式,您可以使用绑定的格式选项

Text="{Binding Path=Date, StringFormat=dd-MM-yyyy}"

有关更多格式选项,请参阅: https://blogs.msdn.microsoft.com/vsdata/2009/07/06/customize-format-of-datetime-string-in-wpf-and-winform-data-binding/

【讨论】:

  • 你的字符串格式不工作它打印 dd-MM-yyyy 而不是日期
  • 在路径中使用“日期”您要绑定的属性名称,我已经更新了代码中的部分。
猜你喜欢
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 2021-10-09
  • 2019-06-04
相关资源
最近更新 更多