Как убрать лишнюю рамку в WPF TextBox? - PullRequest
1 голос
/ 14 октября 2019

У меня проблема с WPF TextBox. У меня есть ItemsControl с TextBox элементами управления, который привязывается к double свойствам в некоторых ViewModel. Для этих TextBox элементов управления у меня есть DataTrigger

<DataTrigger Binding="{c:Binding 'IsCorrect'}" Value="False">
      <Setter Property="BorderThickness" Value="5"/>
      <Setter Property="BorderBrush" Value="GreenYellow"/>
      <Setter Property="Background" Value="#FFD2D2"/>
</DataTrigger>

Он меняет BorderThickness, BorderBrush и Background на TextBox, если был введен неправильный номер. Но если я удалю весь текст из TextBox, он не установит для данных обязательное свойство и не изменит свойства BorderThickness и BorderBrush, а если стили DataTrigger уже заданы, будет вторая граница, котораяextern для DataTrigger's сделанной границы.

Результат изображения:

Screenshot of the result

На изображении GreenYellow граница установлена ​​с помощью DataTrigger и Red externграница установлена ​​сама по себе.

Итак, ВОПРОС - что это за внешняя граница? и как это убрать?!

1 Ответ

0 голосов
/ 14 октября 2019

Итак, ВОПРОС - что это за внешняя граница?

Это часть шаблона Validation.Error по умолчанию.

и как его удалить?!

Определить пользовательский пустой Validation.Error шаблон:

<TextBox>
    <Validation.ErrorTemplate>
        <ControlTemplate />
    </Validation.ErrorTemplate>
</TextBox>

Или в Style:

<Style TargetType="TextBox">
    <Setter Property="Validation.ErrorTemplate">
        <Setter.Value>
            <ControlTemplate />
        </Setter.Value>
    </Setter>
</Style>
...