Подтвердить что ты не робот

ValidationRules без привязки

Я хочу использовать ValidationRules (и его эффекты пользовательского интерфейса) в текстовом поле, фактически не привязывая ничего к текстовому полю.

Я хочу использовать текстовое поле для некоторого ввода, который не привязан ни к чему, кроме необходимости проверять ввод после потери фокуса с помощью ValidationRules.

Можно ли это сделать?

<TextBox.Text>
   <Binding Path="" UpdateSourceTrigger="LostFocus">
     <Binding.ValidationRules>
        <local:IntegersOnlyValidator/>
     </Binding.ValidationRules>
   </Binding>
 </TextBox.Text>
4b9b3361

Ответ 1

Это сработало для меня:

<TextBox.Text>
    <Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="LostFocus">
      <Binding.ValidationRules>
        <Filters:IntegersOnlyValidator/>
      </Binding.ValidationRules>
   </Binding>
 </TextBox.Text>

Ответ 2

Ваш код-код должен быть как можно более независимым от GUI, поэтому я бы рекомендовал вам создать свойство и привязать его. Когда вы хотите передать текст методу, просто передайте значение свойства.

Ответ 3

Вы можете привязать только любую строку, например. создайте его как источник для привязки:

xmlns:sys="clr-namespace:System;assembly=mscorlib.dll"
  <TextBox>
    <TextBox.Text>
      <Binding Path=".">
        <Binding.Source>
          <sys:String>Default Text</sys:String>
        </Binding.Source>
        <Binding.ValidationRules>
          <!-- Validation Rules -->
        </Binding.ValidationRules>
      </Binding>
    </TextBox.Text>
  </TextBox>