2009-04-19 68 views
1

我需要编写一个WPF类似excel的网格控件。我是WPF的新手,无法完成从哪里开始。编写WPF网格

它应该来自UserControl,FrameworkElement还是其他?

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

购买电网不是一种选择。


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

我没有去与ScrollViewer,因为它想呈现整个内容区域,然后滚动。我只想绘制当前可见的内容区域,因为网格中可能有数百万行。

回答

0

它应该可能来自UserControl或ItemsControl(或ItemsControl层次结构中的其他东西,例如Selector)。如果您对WPF不熟悉,最好从UserControl派生出来,因为创建一个很好的自定义控件需要WPF开发的习惯用法以及API的合理流畅性。

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

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

2

你确定你必须写一个吗?那里有很多good grids; even free ones。我知道它没有响应,但只是试图帮助。

+1

DataGrid并不是像网格那样的“Excel”的最佳实现,主要是因为他们希望列“意味着”除了作为列之外的其他东西。 – user7116 2009-04-20 20:03:37

1

免费

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

还可以免费

大多数人觉得这是对他们的要求太简单了,所以来看看微软的免费WPFToolkit包含一个DataGrid控件,这可能满足您的需求。这是一个overview

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

祝你好运!