ValidationRules без привязки - PullRequest
15 голосов
/ 04 июня 2011

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

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

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

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

Ответы [ 3 ]

14 голосов
/ 08 июня 2011

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

<TextBox.Text>
    <Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="LostFocus">
      <Binding.ValidationRules>
        <Filters:IntegersOnlyValidator/>
      </Binding.ValidationRules>
   </Binding>
 </TextBox.Text>
2 голосов
/ 04 июня 2011

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

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>
2 голосов
/ 04 июня 2011

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

...