Also ich würde schon den weg mit den leeren zeilen gehen. Dann passt das ganze auch noch nach ändern der layout einstellung. Wenn du brushes oder bitmaps verwendest musst du diese nach änderung am layout nachpflegen oder du hast sehr viel arbeit damit, die visualisierung des grids nachzuprogrammieren.
Die Sortierkriterien kannst du doch bestimmt selbst irgendwie festlegen. Das Interface heisst jedenfalls IComparer bzw. IComparable.
Die Scrollbalken solltest du weg bekommen, wenn du ermittelst, wie hoch das steuerelement ist (Acual Height) und dann nur soviele leere zeilen anzeigst, wie auf das steuerelement passen. Die obserte angezeigte zeile brauchst du noch und die zeilen höhe. Aber diese infos sollte denke ich schon verfügbar sein.
ISt es ein datengetriebenes grid? (Lass nochmal hören, ich frage mich nämlich momentan, ob/wie man an die info herankommt, welche steuerelemente bei datengetriebenen elementen wpf erzeugt hat)
Wenn es nämlich datengetrieben ist, dann musst du im viewmodel leere zeilen erzeugen. Es empfielt sich dann eine "SpecialCase" Klasse, die das Verhalten für leere zeilen festlegt. (siehe Martin Fowler PoEEA)