【问题标题】:Writing a WPF Grid编写 WPF 网格
【发布时间】:2009-04-19 03:01:04
【问题描述】:

我需要编写一个类似 WPF excel 的网格控件。我是 WPF 新手,不知道从哪里开始。

它应该派生自 UserControl、FrameworkElement 还是其他东西?

我需要它具有水平和垂直滚动条以及内容区域。这是否意味着我的网格控件应该有一个带有滚动条的 DockPanel,然后是另一个用于内容区域的控件,这样我的 GridUserControl 就会有一个带有 2 个停靠滚动条和一个 GridContentFrameworkElement 控件的 DockPanel?

购买网格不是一种选择。


这是我决定的:我有一个 GridUserControl(派生自 UserControl)。它有一个带有 2 个停靠 ScrollBar 对象的 DockPanel。主内容区(GridContent)是派生自Panel的另一个控件。内容在 GridContent.OnRender 中绘制。

我没有使用 ScrollViewer,因为它想要渲染整个内容区域然后滚动它。我只想绘制当前可见的内容区域的一部分,因为网格中可以有数百万行。

【问题讨论】:

    标签: c# wpf grid


    【解决方案1】:

    你确定要写一个吗?那里有很多good gridseven free ones。我知道它没有响应,但只是想提供帮助。

    【讨论】:

    • DataGrid 往往不是像网格这样的“Excel”的最佳实现,主要是因为他们希望列“意味着”而不是列。
    • 也许 Xceed DataGrid 过去是免费的,我不知道。但现在(2011 年 2 月)开发者许可证的成本接近 1000 欧元。
    【解决方案2】:

    免费

    首先,WPF 附带一个GridView 控件,它是一个简单的网格。如果它不能满足您的需求,您可以对其进行扩展,以便继承一些现有功能。

    也是免费的

    大多数人发现它对于他们的要求来说太简单了,因此请查看 Microsoft 的 free WPFToolkit 包含一个 DataGrid 控件,它可能满足您的需求。这是overview

    源代码可用,如果您绝对必须自己实现整个控件并希望看到一种编写网格控件的方法,这可能会很有启发性。

    祝你好运!

    【讨论】:

      【解决方案3】:

      它可能应该派生自 UserControl 或 ItemsControl(或 ItemsControl 层次结构中的其他东西,例如 Selector)。如果您是 WPF 新手,最好从 UserControl 派生,因为创建一个好的自定义控件需要相当流利地使用 WPF 开发习惯以及 API。

      与其尝试通过创建显式 ScrollBar 元素来手动管理滚动区域,不如考虑使用 ScrollViewer 类。如果您将网格内容托管在 ScrollViewer 中,并且对于可用的显示区域来说太大,则 ScrollViewer 将负责显示滚动条并自动滚动内容。

      请注意,如果您正在寻找数据网格类型的功能,那么可以使用各种免费、商业和开源的 WPF 数据网格,尽管这些数据网格确实倾向于表格数据编辑,而不是类似于 Excel 的功能.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多