Istnieje kilka sposobów, aby osiągnąć to, co starasz się zrobić tutaj. Jeśli wydajność nie jest problemem, zignorowałbym wirtualizację i wypróbowanie wersji DockPanel
. Wadą jest to, że trzeba dodać elementy w kolejności zamiast dodawać je po wierszu.
Inną opcją jest użycie dwóch paneli kominowych (po jednym w każdym kierunku). Rozwiązuje to problem z dodawaniem, ale wymaga użycia większej liczby paneli.
Obie poprzednie dwie opcje wymagałyby, aby poszczególne pozycje miały ustawiony ich wysokość/szerokość.
Ostatnią opcją (w zależności od tego, jak duża jest twoja siatka), byłoby użycie siatki o stałych rozmiarach i kolumnach z pozycjami obejmującymi rzędy (przy użyciu właściwości rowspan). Wadą tej metody jest to, że nie znam żadnego dobrego sposobu na stworzenie tej kontroli w xaml dla nieokreślonej liczby wierszy/kolumn, więc musiałbyś utworzyć ją w kodzie, aby uzyskać wymaganą liczbę wierszy/kolumn.
Jeśli masz problemy z wydajnością, spróbuj użyć funkcji VirtualizingStackPanel. Jeśli to nadal nie spełnia twoich wymagań dotyczących wydajności, musisz podklasować VirtualizingPanel
i dostosować ją do swoich potrzeb.
Aby uzyskać więcej informacji na temat wydajności panelu, zobacz numer here.
Proponuję najpierw spróbować dwa StackPanel
metodę, a następnie metodą VirtualizingStackPanel
i wreszcie, jeśli to nie zadziała, to spróbuj VirtualizingPanel
Dopełnienie jest łatwo osiągnąć poprzez ustawienie właściwości Margin
na każdym subcontrol.
do przewijania Użyj ScrollViewer
co panel oblewania można dodać widza przewijania, aby go utworzyć przewijanie, i tak długo, jak można umieścić swój ekran w porządku i mają taką samą wysokość i szerokość rozmieszczania problemu byłby rozwiązany przez panel – Clueless