Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用x:Bind和System.Collections.Generic.List填充ListView并生成列_C#_Listview_Gridview_Win Universal App_Xbind - Fatal编程技术网

C# 如何使用x:Bind和System.Collections.Generic.List填充ListView并生成列

C# 如何使用x:Bind和System.Collections.Generic.List填充ListView并生成列,c#,listview,gridview,win-universal-app,xbind,C#,Listview,Gridview,Win Universal App,Xbind,在将ItemsSource设置为x:Bind时,我试图用a填充,但我不知道如何制作列并使项目正确显示 以下是我到目前为止得到的信息: 数据库.cs中的客户类 public class Customer { [PrimaryKey, AutoIncrement] public int Id { get; set; } public string CompanyName { get; set; } public string FirstName { get; set;

在将ItemsSource设置为
x:Bind
时,我试图用a填充,但我不知道如何制作列并使项目正确显示

以下是我到目前为止得到的信息:

数据库.cs中的客户类

public class Customer
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string CompanyName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Phone { get; set; }
    public string Email { get; set; }
    public string Adress { get; set; }
    public int PostCode { get; set; }
    public string PostArea { get; set; }
    public string CreatedDate { get; set; }
    public string UpdatedDate { get; set; }
}
Database.cs中返回客户对象列表的FetchCustomer方法

public List<Customer> FetchCustomer()
{
    using (SQLiteConnection _connection = new SQLiteConnection(sqlitePlatform, dbFilePath))
    {
        List<Customer> customers = new List<Customer>();
        var _customers = _connection.Table<Customer>();
        foreach (Customer customer in _customers)
        {
            customers.Add(customer);
        }
        return customers;
    }
}
public List FetchCustomer()
{
使用(SQLiteConnection _connection=newsqliteconnection(sqlitePlatform,dbFilePath))
{
列出客户=新列表();
var_customers=_connection.Table();
foreach(客户中的客户)
{
客户。添加(客户);
}
返回客户;
}
}
客户查看页面

public sealed partial class CustomerView : Page
{
    public List<Customer> CustomersFromDB { get; set; }

    public CustomerView()
    {
        this.InitializeComponent();
        ReadyCustomers();
    }

    private void ReadyCustomers()
    {
        var db = new Database();
        CustomersFromDB = db.FetchCustomer();
    }
}
<ListView Grid.Row="1" ItemsSource="{x:Bind CustomersFromDB}"/>
公共密封部分类CustomerView:第页
{
公共列表CustomerFromDB{get;set;}
公共客户视图()
{
this.InitializeComponent();
ReadyCustomers();
}
private void ReadyCustomers()
{
var db=新数据库();
CustomerFromDB=db.FetchCustomer();
}
}
绑定ItemsSource的XAML

public sealed partial class CustomerView : Page
{
    public List<Customer> CustomersFromDB { get; set; }

    public CustomerView()
    {
        this.InitializeComponent();
        ReadyCustomers();
    }

    private void ReadyCustomers()
    {
        var db = new Database();
        CustomersFromDB = db.FetchCustomer();
    }
}
<ListView Grid.Row="1" ItemsSource="{x:Bind CustomersFromDB}"/>

我如何继续这样做,以便自动生成列并正确显示项目

我曾尝试添加s并浏览不同的属性,但还没有发现如何添加

<ListView Grid.Row="1" ItemsSource="{x:Bind CustomersFromDB}">
    <ListView.Header>
        <ListViewHeaderItem ???></ListViewHeaderItem>
    </ListView.Header>
</ListView> 

通过绑定,我得到的结果是:

更新 我今天取得了一些进展,现在有了正确的数据输出。我发现使用DataTemplate可以在元素上设置绑定

我仍在努力以正确的方式显示数据

下面是我现在编写的XAML:

<GridView Grid.Row="1" ItemsSource="{x:Bind CustomersFromDB}" HorizontalAlignment="Stretch">
    <GridViewHeaderItem Content="CompanyName"></GridViewHeaderItem>
    <GridViewHeaderItem Content="FirstName"></GridViewHeaderItem>
    <GridViewHeaderItem Content="LastName"></GridViewHeaderItem>
    <GridViewHeaderItem Content="Phone"></GridViewHeaderItem>
    <GridViewHeaderItem Content="Email"></GridViewHeaderItem>
    <GridViewHeaderItem Content="Adress"></GridViewHeaderItem>
    <GridViewHeaderItem Content="PostCode"></GridViewHeaderItem>
    <GridViewHeaderItem Content="PostArea"></GridViewHeaderItem>
    <GridViewHeaderItem Content="Comment"></GridViewHeaderItem>
    <GridView.ItemTemplate>
        <DataTemplate>
            <GridViewItem BorderThickness="0" BorderBrush="Transparent">
                <GridViewItem.Content>
                    <StackPanel Orientation="Horizontal" BorderThickness="0" BorderBrush="Transparent">
                        <TextBlock Text="{Binding CompanyName}"></TextBlock>
                        <TextBlock Text="{Binding FirstName}"></TextBlock>
                        <TextBlock Text="{Binding LastName}"></TextBlock>
                        <TextBlock Text="{Binding Phone}"></TextBlock>
                        <TextBlock Text="{Binding Email}"></TextBlock>
                        <TextBlock Text="{Binding Adress}"></TextBlock>
                        <TextBlock Text="{Binding PostCode}"></TextBlock>
                        <TextBlock Text="{Binding PostArea}"></TextBlock>
                        <TextBlock Text="{Binding Comment}"></TextBlock>
                        <TextBlock Text="{Binding CreatedDate}"></TextBlock>
                        <TextBlock Text="{Binding UpdatedDate}"></TextBlock>
                    </StackPanel>
                </GridViewItem.Content>
            </GridViewItem>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

结果是:

因此,正如您所知,GridViewHeaderItem未显示,GridViewItem未正确显示

以下是我希望得到的结果:


我将如何继续编写XAML以实现这样的结果?

只需将边距应用于textblocks margin=“5,0,5,0”