1

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

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

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

购买网格不是一种选择。


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

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

4

3 回答 3

2

你确定要写一个吗?那里有很多好的网格甚至免费的。我知道它没有响应,但只是想提供帮助。

于 2009-04-19T03:10:40.830 回答
1

自由

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

也免费

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

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

祝你好运!

于 2009-04-20T19:47:48.240 回答
0

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

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

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

于 2009-04-19T03:12:15.753 回答