【问题标题】:C# WPF using Caliburn.Micro: How can I convert an IEnumerable to BindableCollection?使用 Caliburn.Micro 的 C# WPF:如何将 IEnumerable 转换为 BindableCollection?
【发布时间】:2020-09-14 23:30:37
【问题描述】:

我正在遵循将 C# 项目连接到 SQLite 数据库的指南。这是该指南的链接:https://youtu.be/ayp3tHEkRc0?t=1765

我的代码与视频中创建的非常相似。但是,我正在使用名为 CaliburnMicro 的框架重新创建该项目。我对 CaliburnMicro 的理解是它通过利用模型属性和 UI 组件的相同名称来“自动化”一些数据绑定。

我在项目中使用的模型是 BindableCollection 类型,正如 Tim Corey 的另一个教程中所推荐的那样。这就是我想将我的数据库查询结果转换成的类型。

指南说数据查询的结果是一个 IEnumerable。他使用内置方法将其转换为 List 类型。但是,没有这种方法可以转换为 CaliburnMicro 的 BindableCollection 类型。

    public static BindableCollection<PersonModel> LoadPeople()
    {
        using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
        {
            var output = cnn.Query<PersonModel>("SELECT * FROM Person", new DynamicParameters());

            return output.ToBindableCollection()
        }
    }

我的问题是,如何将 IEnumerable 结果转换为 BindableCollection 数据类型?提前致谢。

【问题讨论】:

    标签: c# wpf sqlite ienumerable caliburn.micro


    【解决方案1】:
    public static class Extensions
    {
       public static BindableCollection<T> ToBindableCollection<T>(this IEnumerable<T> source)
       {
           return new BindableCollection(source);
       }
    }
    

    【讨论】:

    • 非常感谢。公共静态 BindableCollection LoadPeople() { using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString())) { var output = cnn.Query("SELECT * FROM Person", new DynamicParameters());返回 Extensions.ToBindableCollection(输出); } } 公共静态类扩展 { 公共静态 BindableCollection ToBindableCollection(this IEnumerable source) { return new BindableCollection(source); } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多