Wymuś zmianę rozmiaru kontrolki niestandardowej WPF
Napisałem niestandardową kontrolkę WPF, a jej część obejmuje dynamiczne dodawanie elementów do kanwy, które wpływają na wysokość określonej kanwy. Kanwa jest zagnieżdżona w siatce. Kiedy dynamicznie dodaję elementy, wysokość obszaru roboczego zmienia się, ale obszar roboczy ostatecznie wychodzi poza krawędź współdzielonej kontrolki, zamiast powodować zmianę rozmiaru i zwiększenie jej rozmiaru.
Jak mogę uzyskać kontrolę, aby poprawnie zmienić rozmiar?
Mam wrażenie, że muszę wywołać lub zastąpić metodę Measure lub Arrangement, ale nie mam szczęścia z żadną z tych metod - być może dlatego, że wywołuję je z niewłaściwymi parametrami, a może dlatego, że nie są to właściwe metody do wywołania.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
4 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Chciałeś mierzyć i organizować. Czy znasz dwuprzebiegowy system układu WPF? Przeczytaj ten artykuł, aby uzyskać więcej informacji:
układ układu
http://msdn.microsoft.com/en-u ... .aspx
WPF .
W tym artykule opisano również, jak poszczególne panele wpływają na układ. Każdy typ panelu jest inny.
W WPF elementy mają najpierw możliwość określenia, jak duże będą. Panele mogą dostosować swój rozmiar do rozmiaru ich dzieci lub mogą poprosić o stały rozmiar niezależnie od rozmiaru ich dzieci. Przykładem tego ostatniego jest płótno.
Następnie elementom mówi się, jakiego będą rozmiaru, i prosi się o ułożenie siebie i swoich dzieci.
Typ panelu siatki nie tylko pozwala używać wierszy i kolumn, ale także bardzo dobrze nadaje się do automatycznego zmiany rozmiaru treści.
Typ StackPanel nie jest w ogóle dopasowywany automatycznie w wymiarze, w którym jest zorientowany, ale będzie automatycznie wymiarowany w innym wymiarze.
Płótno może automatycznie zmieniać rozmiar, aby wypełnić przestrzeń, ale nigdy nie pozwala na automatyczną zmianę rozmiaru dzieci. Rysuje swoje dzieci według podanych współrzędnych i nie obchodzi go, jak duże są.
Sugerowałbym wypróbowanie siatki z tylko jednym wierszem/kolumną.
Możesz też utworzyć nową klasę Canvas, która ma lepsze możliwości automatycznej zmiany rozmiaru. Podczas pomiaru będziesz musiał zmierzyć dzieci i odpowiednio zmienić rozmiar płótna. W przyszłości może Ci się przydać taka klasa.
Oto artykuł na temat
układ automatyczny
http://msdn.microsoft.com/en-u ... .aspx
w WPF.
Jeśli chcesz utworzyć panel niestandardowy, oto jego podtematem:
niestandardowe elementy panelu
http://msdn.microsoft.com/en-u ... ments
.
EDIT:
Jeszcze jedno: możesz również powiązać szerokość/wysokość dziecka z właściwościami ActualWidth i ActualHeight na płótnie, aby dziecko dostosowywało rozmiar swojego rodzica. W razie potrzeby możesz użyć konwertera, aby ustawić współczynnik kształtu.
Anonimowy użytkownik
Potwierdzenie od:
dawny.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od: