tags:

views:

1225

answers:

3
+1  Q: 

Writing a WPF Grid

I need to write a WPF excel-like grid control. I'm new to WPF and can't quite work out where to start.

Should it derive from UserControl, FrameworkElement, or something else?

I need it to have horizontal and vertical scrollbars and a content area. Does that mean my grid control should have a DockPanel with the scrollbars, then another control for the content area so that my GridUserControl would have a DockPanel with 2 docked scrollbars and a GridContentFrameworkElement control?

Buying a grid is not an option.


This is what I decided on: I have a GridUserControl (derived from UserControl). It has a DockPanel with 2 docked ScrollBar objects. The main content area (GridContent) is another control derived from Panel. The content is drawn in GridContent.OnRender.

I did not go with a ScrollViewer since it wants to render the entire content area and then scroll that around. I only wanted to draw the bit of the content area that was currently visible since the grid can have millions of lines in it.

+2  A: 

Are you sure you have to write one? The are lots of good grids out there; even free ones. I know it's non-responsive, but just trying to help.

JP Alioto
DataGrid's tend not to be the best implementation of an "Excel" like grid, mostly because they want the columns to "mean" something other than being a column.
sixlettervariables
A: 

It should probably derive from either UserControl or ItemsControl (or something else in the ItemsControl hierarchy, such as Selector). If you are new to WPF it is probably best to derive from UserControl because creating a nice custom control requires a reasonable fluency with the idioms of WPF development as well as just the APIs.

Rather than trying to manage the scrolling area manually by creating explicit ScrollBar elements, consider using the ScrollViewer class. If you host your grid content within a ScrollViewer, and it is too large for the available display area, ScrollViewer will take care of displaying scroll bars and scrolling the content automatically.

Note that if you are looking for data grid-type functionality then there are various free, commercial and open source WPF data grids available, though these do tend to be biased towards tabular data editing rather than, say, Excel-like functionality.

itowlson
+1  A: 

Free

First, WPF ships with a GridView control that is a simple grid. If it doesn't meet your needs, you might extend it so you can inherit some existing functionality.

Also Free

Most people find it to be too simple for their requirements, so check out Microsoft's free WPFToolkit contains a DataGrid control, which may serve your needs. Here is an overview.

The source code is available for this, which may be inspirational if you absolutely must implement the entire control yourself and would like to see one approach to writing a grid control.

Good luck!

La Cabra