I want to use the ValidationRules (and it's UI effects) on the textbox without actually binding anything to the textbox.
I want to use the textbox for some input that doesn't bound to anything but need to validate the input after focus is lost using the ValidationRules.
Can it be done?
<TextBox.Text>
<Binding Path="" UpdateSourceTrigger="LostFocus">
<Binding.ValidationRules>
<local:IntegersOnlyValidator/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
This worked for me:
<TextBox.Text>
<Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="LostFocus">
<Binding.ValidationRules>
<Filters:IntegersOnlyValidator/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
Your code-behind should be as independent of the GUI as possible, so I would recommend you to create a property and bind to that. When you want to pass the text to the method, just pass the value of the property.
You could bind to just any string, e.g. create one as the source for the binding:
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>
来源:https://stackoverflow.com/questions/6236047/validationrules-without-binding