问题
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>
回答1:
This worked for me:
<TextBox.Text>
<Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="LostFocus">
<Binding.ValidationRules>
<Filters:IntegersOnlyValidator/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
回答2:
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.
回答3:
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