2013-10-03 10 views
9

Chcę utworzyć element interfejsu użytkownika, który zachowuje się w przybliżeniu tak, jak wejściowe okno tekstowe wbudowanej aplikacji WP SMS.Windows Phone Multi Line Pole tekstowe

Zasadniczo należy

  • początek w polu tekstowym pojedyncza linia
  • kiedy mój tekst osiągnie koniec pierwszej linii, należy poszerzyć o jedną linię, aby objąć go
  • tego potrzebuje, aby przejść do a Max Height of 5 line (gdzie linia = wartość pola tekstowego)
  • Gdy mój tekst wymaga więcej niż 5 linii, pole tekstowe powinno przestać się rozwijać i powinien pojawić się pionowy pasek przewijania

Jakieś sugestie, w jaki sposób mogę to zrobić? Wolę nie używać zdarzeń, aby zobaczyć, ile tekstu wprowadziłem, i rozwinąć/skompresować pole tekstowe w oparciu o to, lub utworzyć nowy element interfejsu użytkownika od zera.

Jeśli to pomaga, mam dostęp do sterowników RAD Telerik dla Windows Phone (RadTextBox).

Odpowiedz

20

Czy próbowałeś użyć właściwości FrameworkElement.MaxHeight? Znacznik będzie podobny do:

<TextBox TextWrapping="Wrap" AcceptsReturn="True" MaxHeight="200" /> 

Podana wartość dla maksymalnej wysokości jest po prostu przykładem i może nie spełniać Twoich konkretnych potrzeb.

Uwaga: jak wspomniano w komentarzach poniżej, pamiętaj, aby usunąć wszelkie wartości określone dla wysokości. Deklaracja będzie przez cały czas ograniczać element do tej wysokości.

+0

Nie modyfikuje faktycznej wysokości elementu - bez względu na to, ile znaków wprowadzę, pole tekstowe będzie nadal wyświetlane jako pole tekstowe jednolinijkowe. – drl

+2

@drl Upewnij się, że nie ma wartości określonej dla wysokości. To ograniczy element do tej wysokości przez cały czas. Testuj z wartością MaxHeight równą 200, czyli około pięciu linii. – lsuarez

+0

Zadziałało idealnie, gdy wyjąłem wyraźną wysokość! Nawet zmniejsza pole tekstowe podczas usuwania tekstu. Serio, dziękuję! – drl