我有一个应用程序,我希望在所有文本框中应用相同的绑定进行验证。
<TextBox Height="23" HorizontalAlignment="Left" Margin="71,76,0,0" Name="textBox1" VerticalAlignment="Top" Width="229" Style="{StaticResource ResourceKey=errorMsgStyle}">
**<TextBox.Text>
<Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit">
<Binding.ValidationRules>
<Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>**
</TextBox>
(**)中的部分对于所有文本框都是相同的,但我不想重复复制和粘贴所有文本框。
不幸的是,该应用程序不使用MVVM。有人可以告诉我如何将此验证绑定定义为模板(或类似的东西)并在任何地方使用?
答案 0 :(得分:0)
您可以通过设置样式中的绑定来实现。
<Style x:Key="ValidatedTextBox" TargetType="TextBox">
<Setter Property="Text">
<Setter.Value>
<Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit">
<Binding.ValidationRules>
<Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/>
</Binding.ValidationRules>
</Binding>
</Setter.Value>
</Setter>
</Style>
当然,所有文本框都将绑定到同一个源...这可能是你想要的。
答案 1 :(得分:0)
<Window.Resources>
<Binding x:Key="Validation" RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit">
<Binding.ValidationRules>
<Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/>
</Binding.ValidationRules>
</Binding>
</Window.Resources>
示例:
<TextBox Text="{StaticResource Validation}"/>