As you wish to display it in a WPF application only, you can define a maximum page size for the report viewer with the InteractiveSize property. The height you define there will determine what you find is "too much data to fit on a page" and break accordingly.
For exporting to a printable format, the PageSize propery will react the same way. But this allows you to have a different size when using the report viewer, because you might want more to be shown on a single page.

With those settings the report viewer will place as much possible data on the defined space and break to a next page when the boundary is exceeded.
If you do not wish to split groups then you must wrap them inside a Rectangle because there you can set the property KeepTogetherto true, which will add a page-break between groups if there is no space for both groups on the same page.

When working with tables, you can use the following method to wrap the groupings in rectangles correctly:
- Place "List" control on the report.
- Set its "DataSetName" property to your dataset name.
- At the design view, right click on the list and then select "Row group".
- At "Group Properties" window, click "Add" button under "Group Expressions:" title and then choose field name that you want to group
within a page.
- After that you can place "Table" control for your detail data inside the row group.
- Once you render the report, report will keep data inside the group together between page break.
Source: https://stackoverflow.com/a/15656441/4579864
I hope this solves your problem. If you have any more questions, just leave a comment.