Wpadłem na ten problem, tworząc ostatnio jakieś oprogramowanie i zdarzyło mi się zapytać DLACZEGO? Dlaczego to zrobili ... odpowiedź była tuż przede mną. Rząd danych jest obiektem, więc jeśli utrzymujemy orientację obiektową, projekt dla danego wiersza powinien być oddzielony (załóżmy, że trzeba będzie ponownie użyć wyświetlania wiersza później w przyszłości). Więc zacząłem używać paneli stosu databound i niestandardowych kontrolek dla większości wyświetlaczy danych. Listy pojawiały się sporadycznie, ale głównie sieć była używana tylko do podstawowej organizacji strony (nagłówek, obszar menu, obszar zawartości, inne obszary). Twoje niestandardowe obiekty mogą łatwo zarządzać wymaganiami dotyczącymi odstępów dla każdego wiersza w panelu stosu lub siatce (pojedyncza komórka siatki może zawierać cały obiekt wiersza, co ma dodatkową zaletę, że reaguje prawidłowo na zmiany orientacji, rozwinięcia/zwijania itp.
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<custom:MyRowObject Style="YourStyleHereOrGeneralSetter" Grid.Row="0" />
<custom:MyRowObject Style="YourStyleHere" Grid.Row="1" />
</Grid>
lub
<StackPanel>
<custom:MyRowObject Style="YourStyleHere" Grid.Row="0" />
<custom:MyRowObject Style="YourStyleHere" Grid.Row="1" />
</StackPanel>
Twoje Własne kontrole będą również dziedziczą DataContext jeśli używasz powiązania danych ... mój ulubiony osobistych korzyści z takiego podejścia.
Jedną z użytecznych przykładów można znaleźć tutaj: http://www.codeproject.com/Articles/107468/ WPF-Padded-Grid – peter70