如何在.NET MAUI(或Xamarin)中动态创建控件?

rqqzpn5f  于 2023-02-20  发布在  .NET
关注(0)|答案(1)|浏览(267)

我需要可视化任何数据库的数据库模式。为了简单起见,这样做没有表之间的链接。现在我有一个列类的名称和数据类型,一个表类的名称和列的列表和DBSchema类的表的列表。表也应该缩进在一个单一的行简单。如何可视化的模式,如果表的数量和内容是未知的?
我尝试过使用UraniumUI DataGrid来可视化单个表,但由于我是MAUI或Xamarin的新手,所以不知道下一步该怎么做。下面是我的类和方法来获取模式:

public class Column
{
    public string ColumnName { get; set; }
    public string DataType { get; set; }
    public bool IsPrimaryKey { get; set; }
}

public class Table
{
    public string TableName { get; set; }
    public List<Column> Columns { get; set; }
}
public class DBSchema
{
    public List<Table> Tables { get; set; }
    public void AddTable(Table table)
    {
        Tables.Add(table);
    }
}

public static DBSchema GetDBSchema(string connectionString)
{
    DBSchema schema = new DBSchema();

    var connection = new SqlConnection(connectionString);
    connection.Open();

    DataTable tablesScheme = connection.GetSchema("Tables");
    foreach (DataRow table in tablesScheme.Rows)
    {
        string tableName = table["TABLE_NAME"].ToString();
        DataTable columnsScheme = connection.GetSchema("Columns", new string[] { null, null, tableName });

        List<Column> columns = new List<Column>();

        foreach (DataRow column in columnsScheme.Rows)
        {
            columns.Add(new Column(column["COLUMN_NAME"].ToString(), column["DATA_TYPE"].ToString()));
        }

        schema.AddTable(new Table(tableName, columns));
    }

    connection.Close();
    return schema;
}
c90pui9n

c90pui9n1#

通常,您可以使用嵌套集合视图和自定义数据模板<CollectionView ItemsSource="{Binding Tables}" />
问题太抽象了,无法详细回答。
https://learn.microsoft.com/en-us/dotnet/maui/user-interface/controls/collectionview/?view=net-maui-7.0

相关问题