跨多个控件的相同控制绑定

时间:2013-02-26 22:08:05

标签: wpf validation controls

我有一个应用程序,我希望在所有文本框中应用相同的绑定进行验证。

<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。有人可以告诉我如何将此验证绑定定义为模板(或类似的东西)并在任何地方使用?

2 个答案:

答案 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}"/>