【问题标题】:Access data source of main program in user control用户控制中访问主程序数据源
【发布时间】:2013-06-04 08:48:29
【问题描述】:

我想编写一个使用多个选项卡的程序,每个选项卡都显示一个数据网格。所有网格的数据都存储在一个数据源中。除了列数/行数和值之外,每个选项卡看起来应该相同。

所以我现在尝试将网格视图放入用户控件并创建一个 .dll。如果添加了选项卡,我将用户控件放入其中 - 这已经有效。网格在虚拟模式下工作,如果创建了新的选项卡/网格,它会调用事件将数据加载到网格中。

现在我的问题是网格和 LoadData 事件在用户控件中,而数据源在我的主程序中。所以在用户控制中,数据源是未定义的。我认为这没问题,因为您不单独运行用户控件,并且一旦在主程序中使用它,数据源应该可用于 LoadData 事件。但是,在数据源未知的情况下,似乎无法生成 .dll。

另一方面,我不想将数据源放入用户控件,因为每次创建新选项卡时都会复制它。

我希望你能给我一个提示,什么是最好的实现方式。

非常感谢!

【问题讨论】:

    标签: c# .net oop datagridview user-controls


    【解决方案1】:

    我不知道你期望什么答案(多详细),但我认为这是一个很好的例子:

    • 重复使用一个控件
    • 使用 MVVM 架构模式

    我会尝试将执行负责创建 ViewModel 的逻辑的类分开。控件(您的目的中的网格)将始终绑定到此 ViewModel,并且此控件将在不同的视图中重用。取决于它的放置位置,如果有必要,您可以添加一些附加功能(装饰器设计模式)。如果您期望比抱歉更详细(非概念性)的解决方案。

    【讨论】:

    • 是的,概念上还可以,我没想到会有任何代码。只是我想避免数据绑定。这对我来说很复杂,特别是因为数据存储在 lua 表中,而我正在使用 LuaInterface 来访问它。所以数据不是保存在通常的 c# 数据结构中。
    • 我从来没有听说过 LuaInterface,所以我帮不了你,但祝你好运。
    猜你喜欢
    • 2011-03-15
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多