WPF 텍스트 상자에서 특정 길이를 초과하는 문자열로 문자를 만들 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1204412

문제

나는 a를 사용하고있다 TextBox 특정 수의 캐릭터 후에 캐릭터가 빨간색으로 변하기를 원합니다. 사용자에게 너무 많이 입력 한 사용자를 보여줍니다. 사용자가 "정말로 중요한 생각"을 입력했을 수도 있기 때문에 자르고 싶지 않습니다. 기본 비즈니스 모델에 대한 검증이있어 입력이 유효하지 않은시기를 알려주고 스타일을 지정합니다. TextBox 무효를 나타내려면.

나는 원한다 Style 텍스트도. a를 사용 하여이 작업을 수행 할 수 있습니까? TextBox, 또는 a로 가야합니까? RichTextBox? 내 기본 값은 단지 직선 문자열입니다.

도움이 되었습니까?

해결책

재고 WPF 검증 메커니즘을 사용하고 있다고 가정합니다. ValidationRules. 그렇다면 a를 정의해야합니다 Trigger ~에 Validation.HasError == true, 그리고 설정 TextBox 필요에 따라 속성. 예를 들어, 다음은 유효하지 않은 경우 빨간색으로 텍스트를 강조 표시합니다.

<TextBox>
  <TextBox.Text>
    <Binding ...>
      <Binding.ValidationRules>
        ...
      </Binding.ValidationRules>
    </Binding>
  </TextBox.Text>
  <TextBox.Style>
    <Style TargetType="{x:Type TextBox}">
      <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="True">
          <Setter Property="Foreground" Value="Red" />
        </Trigger>
      </Style.Triggers>
    </Style>
  </TextBox.Style>
</TextBox>

다른 팁

이것은 일종의 미친 대답이며 아직 시도하지는 않았지만 작동하면 리치 텍스트 상자 대신 텍스트 상자를 계속 사용할 수 있습니다.

그라디언트 브러시를 사용하여 텍스트를 칠하는 경우 (또는 텍스트가 아닌 경우 텍스트 상자 배경이 허용되는 경우).

입력이 너무 길고 빨간색으로 붉어지는 시점까지 흰색이되도록 그라디언트를 구축 할 수 있습니다. 물론 텍스트가 너무 길어질 때까지 브러시는 모두 흰색이 될 것입니다.

여기에는 그라디언트 정의를 올바르게 얻기위한 텍스트 측정이 포함됩니다 (비례 글꼴로 인해 유효한 영역이 입력 된 문자에 따라 유효한 영역이 다른 크기가되기 때문에)가 입력 된 각 문자에 브러시를 계산하고 할당해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top