WPF TextBox의 여러 줄


364

의견을 보내기위한 앱을 개발 중입니다.

기본적으로 TextBox주석을 작성 하려고 하지만 WinForms에 익숙합니다 MultiLine=true. 내가 설정했습니다MinLines 3으로 했지만 거기에 도달하는 것이 좋지만 사용자 가이 블록의 어디에서나 입력 할 수 있다면 좋아합니다. 예를 들면 다음과 같습니다.

- Item 1        blah
- Item 2                blahlb lahbvl   d

그러나 현재 텍스트는 모두 한 줄로 유지됩니다.

- Item 1         blah - Item 2                      blahb blahb blah

이러한 의견은 이메일 본문을 작성하는 데 도움이됩니다. 이 문자열을 전자 메일 본문 문자열에 넣을 때 같은 형식을 쉽게 유지할 수 없다면 의미가 없을 수 있습니다 (입력 할 때와 같이 보낼 때와 같이 보입니다).

내가 추구하는 것을 달성 할 수 있습니까? 아니면 한 줄에 모든 텍스트로 남겨 두어야합니까?

답변:


757

사용 TextWrapping="Wrap"하고 AcceptsReturn="True"당신의 텍스트 상자에.

또한 활성화 AcceptsTab하고 싶을 수도 있습니다 SpellCheck.IsEnabled.


1
안녕하세요 @itowlson 방법으로 여러 줄 텍스트 상자를 만들면 더 잘 label1.Content = textBox1.Text.Length;작동하지만이 줄로 텍스트 상자 텍스트 카운터를 설정 하려면 텍스트 상자 카운터에서 Enter 키를 누르면 2 문자가 증가합니다. 이 작업을 어떻게 수행 할 수 있습니까?
Jay Shukla

2
이것은 개행 문자가 두 문자 (CR / LF)이기 때문에 발생합니다. 단일 문자로 취급하려면 다음과 같이하십시오 textBox1.Text.Replace("\r\n", " ").Length. 백엔드가 문자 수를 제한하기 때문에 이것이 사용자 피드백을 의미하는 경우 백엔드가 카운트하는 방식으로 CR / LF를 두 문자로 계산해야 할 수도 있습니다!
itowlson

또한이 링크에서이 문제를 묻습니다. stackoverflow.com/questions/18459908/…
Jay Shukla

1
또한 확인 VerticalContentAlignment 스트레치로 설정되어 있는지 확인
에 란을 otzap

1
또한 스크롤 막대를 갖기 위해 주변 ScrollVewer 구성 요소를 추가하십시오.
Borko Djurovic

34

또한 나와 같이 편집기를 사용하지 않고 XAML에 직접 컨트롤을 추가하면 두 속성을 설정 한 후에도 사용 가능한 높이로 늘어나지 않을 수 있습니다.

TextBox를 늘리려면을 설정하십시오 Height="Auto".

최신 정보:

돌이켜 보면 앱 리소스 어딘가에 응용 프로그램의 높이를 표준으로 지정하는 TextBox의 기본 스타일 덕분에 이것이 필요했을 것입니다. 이것이 도움이된다면 이것을 확인하는 것이 좋습니다.


19

다음은 여러 줄 텍스트를 허용하고 자체 스크롤 막대를 사용 하는 샘플 XAML입니다 TextBox.

<TextBox
Height="200"
Width="500"
TextWrapping="Wrap"
AcceptsReturn="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"/>

12

@Andre Luus와 달리 설정 Height="Auto"이 늘어나지 않습니다 TextBox. 내가 찾은 해결책은 설정하는 것이 었습니다.VerticalAlignment="Stretch"


1
'VerticalAlignment'의 기본값 'Stretch' 이며 MSDN을 참조하십시오 . 그리고 그렇습니다, 그것은 정말로 나를 위해 일했습니다. 텍스트 상자를 배치 한 컨트롤에 따라 다를 수 있습니다. 표준이 아닌 것입니까?
Andre Luus

1
또 다른 가능성은 VerticalAlignment에 대해 다른 값을 정의한 해당 TextBox 범위에 정의 된 텍스트 상자의 기본 스타일이 있다는 것입니다. 스눕과 함께 확인하겠습니다.
Andre Luus

1
컨테이너가 고정되어 있으면 높이 자동이 작동하지 않습니다. 상단의 모든 상위 컨테이너는 확장 할 수 있어야합니다. 스크롤바로 감싸도 작동합니다.
Lee Louviere 2018 년

5

전용 속성 받는 WPF에 대응

Winforms 속성 :TextBox.Multiline = true

는 IS WPF의 속성 : TextBox.AcceptsReturn = true.

<TextBox AcceptsReturn="True" ...... />

같은 다른 모든 설정, VerticalAlignement, WordWrap등 만 UI에서 텍스트 상자의 상호 작용이 있지만, 영향을주지 않는 방법을 제어 Multiline동작을.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.